mysql规范分享

建表规范

  • 统一存储引擎: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还低,与全表扫描是小巫见大巫。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。