mysql 建表设计建议

这里的建表建议是在MySQL数据库的innodb存储引擎下使用。

1、一定要设置主键,且主键尽量用自增ID去实现。

对于innodb,并没有强制我们使用主键,但是其实innodb内部的实现是必定含有主键的,因为我们的数据是存放在主键索引的B+树上的。对于没有建立主键的表,innodb会默认生成一个主键,但是这个主键我们是不可见的。而使用主键我们尽量用int或者bigint类型为主键,并且设置为自增。这里是考虑到MySQL在做插入数据时,能够更快的找到新插入主键的位置,提升速度,而数值型的主键更好去比较,自增的主键,会插入到最后一个节点上,这里减少了节点查找和树节点平衡移动的时间。如果使用的是随机生成的uuid,效率上会有一定的慢,一个是uuid是一个字符型,比较的速度会慢,另外就是插入可能不是最后一个节点,把时间浪费在节点的移动和平衡上了。

2、某些字段如果插入时确定是永远不可能为空的,那么设置为not null。

这里是考虑到是否为空的情况,innodb会为是否为空这个条件设计更多的考虑和存储,特别是对于索引字段,会消耗一些性能 。

3、索引规范:唯一索引以UK_开头,其他索引以IDX_开头

这只是一个规范而已,没有太多的讨论。

4、如果是一个部门公用一个数据库,且部门有多个业务线,建议建表的时候按照不同的业务设置不同的表前缀。

例如:采购purchase_开头,商品item_开头,数据data_开头

猜你喜欢

转载自blog.csdn.net/codingtu/article/details/78757064