mysql数据库

6

建表公约

1.【强制】表名、字段名必须使用小写字母和数字;

2.【强制】表名不使用复数名词;

3.【强制】小数类型使用decimal,禁止使用float,double。

4.【强制】如果存储的字段长度几乎一致,使用char定长字符串类型;

5.【强制】表必备三大字段:id, gmt_create, gmt_modified;gmt_create代表创建时间,gmt_modified代表更新时间;

6.【推荐】表名的命名建议“业务名称_表的作用”;

7.【推荐】库名和应用名称尽量一致;

8.【推荐】单表数据行超过500万或者2G,才进行分库存储,用空间换取时间。大量的join,影响数据库的查询效能。

索引

9.【推荐】如果有order by的情况,注意索引的有序性。如果a,b,c都是索引。where a =,b=,order by c这种用法索引没有被破坏,where a >,order by b, c这种用法索引是破坏的。正确用法中,没有给c进行二次排序(索引本身是按照顺序放置的);错误用法中,a>的条件筛选过程中,给b,c进行二次排序了。

SQL语句

1.【强制】count(*)会把null值计数;count(1)或者count(常量)会提出null值;

2.【强制】count(distinct col)剔除重复的null值外数据;

3.【强制】当一列值全为null值,count(col)为0,sum(col)为null;