- 索引概念和作用
- MySQL 索引类型
- MySQL索引优化规则
- 前导模糊查询不能使用索引
- union、in、or都能够命中索引,建议使用in
- 负向条件查询不能使用索引,可优化为in
- 联合索引最左前缀原则
- 范围列可以用到索引(联合索引必须是最左前缀)
- 把计算放到业务层而不是数据库层
- 强制类型转换会全表扫描
- 更新十分频繁、数据区分度不高的字段上不宜建立索引
- 利用覆盖索引来进行查询操作,避免回表
- 如果有order by、group by的场景,注意利用索引的有序性
- 使用前缀索引来优化
- 建立索引的列,不允许为null
- 利用延迟关联或者子查询优化超多分页场景
- 业务上具有唯一特性的字段,即使是多个字段的组合,建议唯一索引
- 超过三个表建议不要join
- 如果明确知道只有一条结果返回,limit 1 能够提高效率。
- explain中的type至少要达到range级别,要求是ref级别,consts 最好
- 单表索引建议控制在5个以内
- 单索引字段数不允许超过5个
- 创建索引时避免以下错误观念
- 问题详解
- 总结
- 参考资料
每个熟悉mysql的开发者,都读过《高性能MySQL》,其是mysql领域中的经典之作,拥有广泛的影响力,第三版更新了大量的内容,每个dba或开发者都有自己的一份<高性能MySQL笔记>。