关于数据库设计

字段为什么要定义为NOT NULL?

1)索引性能不好

Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要mysql内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引。 —— 出自《高性能mysql第二版》

(2)查询会出现一些不可预料的结果

count查询时会将为null的结果计算在内。

货币字段用什么类型?

回答:如果货币单位是分,可以用Int类型。如果坚持用元,用Decimal。

千万不要答float和double,因为float和double是以二进制存储的,所以有一定的误差。

为什么一定要设一个主键?

因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键。

主键是用自增还是UUID?

自增。innodb 中的主键是聚簇索引。如果主键是自增的,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。如果不是自增主键,那么可能会在中间插入,就会引发页的分裂,产生很多表碎片!。

猜你喜欢

转载自www.cnblogs.com/dingpeng9055/p/11175840.html