琯琯博客 纸上得来终觉浅,绝知此事要躬行。

MySQL 优化规则

琯琯
2016-12-12

mysql核心军规小结

  • 尽量不在数据库做运算
  • 控制单表数据量
  • 保持表身段苗条
  • 平衡范式不冗余
  • 拒绝3B(大SQL/大事务/大批量)

字段类军规小结

  • 用好数值字段类型
  • 将字符转化为数字
  • 优先使用枚丼ENUM/SET
  • 避免使用NULL字段
  • 少用幵拆分TEXT/BLOB
  • 不在数据库里存图片

索引类军规小结

  • 谨慎合理添加索引
  • 字符字段必须建前缀索引
  • 不在索引列做运算
  • 自增列或全局ID做INNODB主键
  • 尽量不用外键

SQL类军规小结

  • SQL语句尽可能简单
  • 保持事务(连接)短小
  • 尽可能避免使用SP/TRIG/FUNC
  • 尽量不用 SELECT *
  • 改写OR语句
  • 避免负向查询和% 前缀模糊查询
  • 减少COUNT(*)
  • LIMIT的高效分页
  • 用UNION ALL 而非 UNION
  • 分解联接保证高幵发
  • GROUP BY 去除排序
  • 同数据类型的列值比较
  • Load data导数据
  • 打散大批量更新
  • Know Every SQL!

约定类军规小结

  • 隔离线上线下
  • 禁止未经DBA确认的子查询上线
  • 永远不在程序端显式加锁
  • 统一字符集为UTF8
  • 统一命名规范

作者:石展@赶集 http://weibo.com/wushizhan

(完)

原文链接


评论

内容导航