建表规范
- 统一存储引擎:
InnoDB
- 统一编码格式:
utf8mb4_general_ci
- 表名统一使用单数,不使用复数
- 表必备三字段:id, create_time, update_time
- id: 主键,类型为unsigned int(10)、自增、步长为1
- create_time, update_time: 创建时间,更新时间,类型unsigned int(10)
- 禁用保留字,如desc、range、match、delayed等,参考官方保留字:https://blog.csdn.net/tales522/article/details/100188300
- 字段名统一使用下划线小写字母,禁止使用驼峰命名
- 字段必须要有注释,如果是状态枚举值,注释中一一列出包含的数值
索引规范
- 唯一索引名为
uk_
字段名;普通索引名则为idx_
字段名。 说明:uk_即unique key;idx_即index的简称 - 在varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度
- 禁止使用外键与级联,一切外键概念必须在应用层解决
SQL语句规范
- 超过三个表禁止join
- like搜索严禁左模糊或者全模糊
- 禁止使用存储过程
- SQL性能优化的目标:至少要达到range级别,要求是ref级别,如果可以是consts最好
- 1)consts单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
- 2)ref指的是使用普通的索引。(normal index)
- 3)range对索引进范围检索。
- 反例:explain表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index级别比较range还低,与全表扫描是小巫见大巫。