文章目录
10.重新认识MySQL索引匹配过程
MySQL 的索引匹配过程是数据库查询优化中的关键部分。
10.1匹配规则
经过分析总结,MySQL 索引匹配的一般规则一共有:五种
- 等值匹配、最左匹配原则、列前缀匹配、匹配范围值、索引覆盖
-
等值匹配:
如果查询条件是等值匹配,即
=
操作符,MySQL 可以高效地使用索引来查找匹配的行。这种情况下,MySQL 会直接根据索引中的值找到匹配的记录。 -
最左匹配原则:
MySQL 的组合索引使用最左匹配原则,即只有当查询条件匹配索引的最左侧列时,索引才会被使用。例如,对于
(a, b, c)
的组合索引,查询条件只包含a
或a, b
或a, b, c
才会使用索引。- mysql会一直向右匹配直到遇到范围查询(>、<)就停止匹配(注意:对于 >=、<=、BETWEEN、like 前缀匹配这四种范围查询,并不会停止匹配),
- 比如a = 1 and b = 2 and c > 3 and d = 4
- 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,
- 如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整(建立索引时他们三个的顺序)
-
列前缀匹配:
可以匹配某一列值的开头部分:
使用索引: explain select * fro