一、 常用字段统一名称
1、 遵循规则:简洁、辨别度高、有意义
原则:在一个项目内尽量保持一致 其他字段亦可。
示例:
创建时间:ctime
创 建 人:create_id
修改时间:utime
修 改 人:update_id
是否删除:state 0-删除 1-未删除
二、建表规范
1、建表时统一使用InnoDB引擎;
2、无特殊需求日期格式统一为 datetime 类型;
3、同一模块表使用相同的前缀;
4、数据库和表的字符集统一使用 utf8_general_ci;
5、所有表和字段需要明确注释;注释内容尽可能表达字段含义;
6、优先选择符合存储需要的最小的数据类型;
7、避免使用 TEXT、BLOB 数据类型(建议把 BLOB 或是 TEXT 列分离到单独的扩展表中);
8、尽可能把所有列定义为 NOT NULL;NULL代替方案为设置默认值;
9、小数类型和同财务相关的金额类数据必须使用 decimal 类型;
10、表名称只能使用字母下划线,尽可能少的使用数字,且一律小写;
长度控制在20个字符以内;
11、当表的字段数非常多时,可以将表分成两张表;建议单表字段量控制在20个字符以内;
12、列表数据不要拿全表,要使用 LIMIT 来分页,每页数量也不要太大
13、单表索引尽量少,控制在5个以内;非性能必要不要建立索引;
三、MYSQL语句使用规范
1、SELECT语句尽量制定具体字段名称,少使用*查询;
2、INSERT语句制定具体字段名称,不可以写成 INSERT INOT tab1 values(**);
3、多表JOIN,无特殊需求,不要超过3个表;
4、OR 改写成 IN:OR 的效率是 n 级别,IN 的效率是 log (n) 级别,in 的个数建议
控制在 200 以内;
5、尽量避免使用子查询,可以把子查询优化为 JOIN 操作;
6、执行删除操作需谨慎(如无必要,执行软删除);
7、尽量少使用运算列:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边。
8、避免使用函数和触发器;
9、避免在where条件属性上使用函数;