blyang 你长的很好看啊~
MySQL 使用规范
发表于: | 分类: 默认分类 | 评论:0 | 阅读: 377

MySQL使用规范

基础规则

  1. 用IN代替OR,减少反向查询。同时,SQL语句中IN包含的值不应该过多,要求少于1000个

  2. select务必加上field,获取必要的字段,尽量少使用 select * 。 原因是大量的字段查询会淘汰热数据,导致内存命中率降低,影响数据库性能。

  3. 对于同一个表带多次alter操作,必须合并为一次操作

  4. 使用InnoDB存储引擎

    支持事物、行锁

  5. 使用utf8mb4字符集

    无须转码,支持emoji和不常见的汉字,无乱码风险

  6. 数据搜索,严谨左模糊(‘%XXX’)或者全模糊('%XXX%'),这样会导致全表扫描

  7. 数据搜索时,where条件上禁止使用函数或者计算

    select id from user where date(create_time)='2018-12-16', 这种不允许使用,加了函数会导致全表扫描

  8. 禁止负向查询,负向查询包含( NOT, !=, <>, !<, !>, NOT IN, NOT LIKE )等,这些负向查询会包含全表扫描

  9. 事务锁的粒度要尽可能小

  10. 大表严禁使用子查询,不允许用join,原因是会产生临时表,销毁热数据,极大的影响数据库性能

  11. 单库表的数量不要超过400张

  12. 尽量单表查询,减少联合查询,减少锁表的时间

命名规则

  1. 所有的表和字段,都必须增加注释。

  2. 数据库只存储数据,不允许存放业务逻辑,不允许使用存储过程、视图等

  3. mysql单表数据量应该在千万级以下,保证查询和存储的效率

  4. 库、表、字段等,都适用小写,下划线风格

  5. 所有的表必须有主键

  6. 不允许使用外键,如果有外键约束,需要由应用程序控制。

字段设计规范

  1. 所有的字段都需要定义为NOT NULL,并且需要提供默认值

    • NULL的列,索引的构建、统计、比较等逻辑,都更复杂,MySQL的可优化空间比较小

    • NULL需要额外的存储空间

    • NULL 在MySQL内部需要进行特殊处理,会增加数据库处理纪录的复杂度

  2. 尽量不要使用TEXT,BLOB类型的数据,

  3. 存储货币时,不允许使用小数,而要使用整数,保证钱能够对的上

  4. 使用varchar存储手机号

索引设计

  1. 禁止在更新频繁,区分度不高的属性上建立索引

  2. 建立组合索引时,需要把区分度高的字段放在最左边

评论已关闭

TOP