MySQL 数据库设计规范

1、表名、字段名必须使用小写字母,不能以数字开头,不要使用数据库关键字和保留字;多个单词之间用下划线连接,不要在两个下划线之间只出现数字。

2、表名不能使用复数。

3、表示是否概念的字段,使用 is_field 形式命名,类型为 unsigned tinyint,例如是否已删除,使用 is_deleted 命名,1表示是,0表示否。

4、索引命名,主键命名 pk_ 开头, 唯一索引命 uk_ 开头,普通索引命名 idx_ 开头。

5、数字类型使用 decimal,禁止使用 float 和 double,如果需要存储的数值范围超过 decimal 范围,将整数和小数部分拆分存储。

6、varchar 可变长度字符串,不预先分配存储空间,但不要超过5000个字符。

7、存储数据如果超过varchar 最大长度,放在独立表中存储,防止影响其它字段索引性能,使用 text 类型,通过主键和主表关联。

8、允许字段冗余,以提高查询性能,需要保持数据一致性,冗余字段不能为 text类型字段,也不能为 varchar 超长字段。

9、单表超过500w行,或者 2GB,建议分库分表。

10、varchar 类型字段上建立索引, 需要根据文本区分度指定索引长度,参考计算公式,count(distinct left(field_name, 索引长度))/count(*) 。

11、建立组合索引,需要将区分度最高的字段放在最前面。

12、如果建立了组合索引,并且对组合索引中第一个字段使用了范围查询条件,根据B-Tree 最左前缀匹配特性,此组合索引失效。

13、SQL性能优化目标:至少达到range 级别,对索引进行范围检索;要求是 ref 级别, 即使用普通索引; 最好是 consts 级别,使用主键或者唯一索引。

猜你喜欢

转载自blog.csdn.net/suoyx/article/details/115412329