MySQL开发规范

作者: 编程说书酱 | 来源:发表于2019-01-11 15:13 被阅读0次

一、基础规范

1)    使用InnoDB存储引擎

2)    数据库字符集使用UTF8,校对字符集使用utf8_general_ci

3)    所有表、字段都尽量添加注释

4)    库名、表名、字段名使用小写字母,禁止超过32个字符,须见名知意

5)    非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名

二、查询规范

1)    SQL语句尽可能简单,大的SQL想办法拆分成小的SQL实现

2)    不要使用SELECT * ,查询具体要用到的字段

3)    禁止like做where条件(会全表扫描且不能用索引)

4)    除非必要,避免使用 != 等非等值操作符(会导致用不到索引)

5)    Where条件里不要对列使用函数(不会引用索引)

6)    能确定返回结果只有一条时,使用limit 1(LIMIT分页注意效率,LIMIT越大,效率越低)

7)    少用子查询,改用JOIN(子查询要在内存里建临时表)

8)    多表JOIN的字段,区分度最大的字段放在前面

9)    IN条件里的数据数量要尽量少,超过200个用EXIST代替IN

10)    Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表)

11)    禁止单条语句同时更新多个表

12)    事务要尽量简单,整个事务的时间长度不要太长

三、表设计规范

1)    用DECIMAL代替FLOAT和DOUBLE存储精确浮点数(精确数据)

2)    使用TINYINT代替ENUM类型(便于迁移时兼容)

3)    尽可能不使用TEXT、BLOB类型(该数据类型不能设置默认值、不便于排序、不便于建立索引)

4)    同一意义的字段设计定义必须相同(便于联表查询)

5)    所有字段均定义为NOT NULL(避免使用NULL字段,NULL字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效)

6)    表必须有主键,不使用更新频繁的列做主键、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键

四、索引设计规范

1)    单表索引数量不超过10个

2)    单个字段不要超过两个索引

3)    新建的唯一索引必须不能和主键重复

4)    避免冗余和重复索引

5)    尽量不要在频繁更新的列上建立索引

6)    不在低基数列上建立索引,例如状态、类型等

7)    不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引)

8)    复合索引须符合最左前缀的特点建立索引(mysql使用复合索引时从左向右匹配)

9)    重要的SQL中where条件里的字段必须被索引

10)    Where条件里的字段顺序与索引顺序无关,优化器会自动调整

11)    索引选择性= Cardinality / Total Rows,即基数 ÷ 数据行数,值越接近1说明使用索引的过滤效果越好

12)    建立索引时,务必先explain,查看索引使用情况

相关文章

  • MySQL运维及开发规范

    MySQL运维及开发规范 一.基础规范 二.命名规范 库、表、字段开发设计规范 四.索引规范 五.SQL规范 六....

  • mysql数据库规范

    一.建表规范 MYSQL数据库设计规范与原则 互联网MySQL开发规范 1.基础规范 使用 INNODB 存储引擎...

  • MySQL 开发规范

    MySQL开发规范由基础规范、命名规范、字段规范、索引规范、语句规范组成。 1、基础规范 (1)所有表统一使用In...

  • MySQL开发规范

    一、基础规范 表字符集使用 UTF8 所有表都需要添加注释 不在数据库中存储图⽚、文件等大数据 禁止在线上做数据库...

  • MySQL开发规范

    一、 表设计类 强制类规范 创建表的存储引擎必须是InnoDB。 每个表必须显式的指定一个主键。 不允许使用联合主...

  • MYSQL开发规范

    (一)建表规约 1.【强制】在编写建表语句时,需同时考虑回滚、以及必要的初始化语句;生产环境变更表或数据时须提供变...

  • mysql开发规范

    单表60亿参考

  • MySQL开发规范

    库表设计 库名、表名、字段名使用小写字母,”_”分割,不超过18 个字符,使用名词且见名知意. 不使用temp、o...

  • MySQL开发规范

    1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_tabl...

  • MySQL开发规范

    一、基础规范 1) 使用InnoDB存储引擎 2) 数据库字符集使用UTF8,校对字符集使用utf8_gene...

网友评论

    本文标题:MySQL开发规范

    本文链接:https://www.haomeiwen.com/subject/ctuxdqtx.html