mysql数据库
建表公约
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;