MySQL 索引优化入门:让查询速度提升的核心方法

慢查询是很多项目成长中的痛点。本文从最基础的索引原理讲起,分享最常用的索引优化规则与排查方法,新手也能快速定位并解决常见的慢查询问题。

数据库查询慢,十有八九和索引有关。理解索引的作用,最简单的类比就是查字典:如果没有目录,就要一页一页翻;有了目录,就能快速定位到目标页码。数据库索引也是同理,通过建立有序的数据结构,避免全表扫描,大幅提升查询效率。

最常用的是普通索引和唯一索引。主键会自动创建主键索引,唯一索引除了加速查询还能保证数据唯一性。创建索引的基本原则是:where、order by、join on 后面常用的字段考虑加索引,低基数字段(比如性别、状态)索引收益很低,不建议建。

索引不是越多越好。索引会占用存储空间,并且在插入、更新、删除数据时需要同步维护,过多的索引反而会降低写入性能。一张表的索引数量建议控制在 5 个以内,优先考虑联合索引,利用最左前缀原则覆盖更多查询场景。

排查慢查询首先要学会用 explain。在 SQL 前加上 explain 关键字执行,就能看到这条语句的执行计划。重点关注 type 字段,all 代表全表扫描,需要优化;key 字段显示实际用到的索引,如果没命中就要分析原因。常见的索引失效场景包括:字段上做运算、使用函数、隐式类型转换、like 左模糊、or 连接非索引字段等。

参与讨论

回到顶部
日夜切换
在手机上浏览此页面