T31-10.28-MYSQL规约

141 阅读2分钟

建表规约

建表强制规约

表、字段命名

  • 必须使用小写字母或数字
  • 禁止出现数字开头
  • 禁止两个下划线中间只出现数字
  • 不使用复数名词
  • 禁用保留字
  • 是与否概念的字段,必须使用is_xxx命名

数据类型

  • 小数类型为decimal
  • 货币使用最小货币单位,数据类型为bigint(这里我偏向用decimal)
  • 字符串长度几乎相等使用char
  • varchar长度不要超过5000

表必备三字段

  • id
  • create_time
  • update_time

推荐建表规约

  1. 表的命名最好是遵循"业务名称_表的作用"
  2. 库名与应用名称尽量一致
  3. 如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释
  4. 字段允许适当冗余,以提高查询性能,但必须考虑数据一致
  5. 单表行数超过500w行或者单表容量超过2gb,才推荐分库分表

索引规约

索引的特性:持久性(磁盘存储)、有序性(相当于目录)

索引分类

image.png

  • 什么是覆盖索引? 一个索引包含了(或覆盖了)满足查询结果的数据就叫做覆盖索引(索引包括了你要查询的列)

索引的数据结构

  • 从二叉树到平衡二叉树
  • btree image.png
  • b+tree image.png

索引命名

  • 主键索引名为pk_字段名
  • 唯一索引名为uk_字段名
  • 普通索引名为idx_字段名

创建索引规约

  • 有唯一特性的字段必须建成唯一索引
  • 在varchar字段上建立索引时,必须指定索引长度
  • 建组合索引的时候,区分度最高的在最左边

SQL规约

image.png

count

image.png

分页

image.png 这里这个优化不太懂

null值

image.png

避坑指南

image.png