数据库规范

1.尽量不要让数据库做运算,在程序上解决

2.控制表的数据量,纯int不超过1000w,纯char不超过500w,合理分表不超载,单库建议不要超过300-400张表

 

数据库的命名 公司名_项目名_模块名

 

库名、表名、字段名必须使用小写字母,“_”分割

库名、表名、字段名必须不超过12个字符。

库名、表名、字段名见名知意,建议使用名词而不是动词。

表必须使用InnoDB存储引擎。

表必须使用“t_”开头命名。

表字符集选择UTF8。

存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。

建议使用UNSIGNED存储非负数值。

建议使用INT UNSIGNED存储IPV4。

整形定义中不添加长度,比如使用INT,而不是INT(4)。

使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED。

不建议使用ENUM类型,使用TINYINT来代替。

尽可能不使用TEXT、BLOB类型。

 

非唯一索引必须按照“idx_字段名称_字段名称[_字段名]”进行命名。

索引中的字段数建议不超过5个。

单张表的索引数量控制在5个以内。(索引的字段最好不要超过3个,要超过就要找理由找原因)

唯一索引必须按照“uk_字段名称_字段名称[_字段名]”进行命名。

建议字段定义为NOT NULL(datetime-- CURRENT_TIMESTAMP)。

不建议使用%前缀模糊查询,例如LIKE “%weibo”(索引优化)

WHERE条件中必须使用合适的类型,避免MySQL进行隐式类型转化。(比如var类型的数字,但是where后面条件是数字,那么数据库会对全表这个字段进行隐式类型转化,就导致全表扫描)

 

不用复合主键,用唯一索引代替

 

合理创建联合索引(避免冗余),(a,b,c) 相当于 (a) 、(a,b) 、(a,b,c)。

合理利用覆盖索引。

 

varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效率

 

【强制】表必备三字段:id, create_time, update_time。

 

posted @ 2020-03-02 14:50  liang_liu  阅读(188)  评论(0)    收藏  举报