目录
一、个案研究
二、最左边匹配原则的概念
三.最左边匹配原则的原因
一、个案研究1.假设数据库存在一个联合索引键:
2.使用查询语言
3.使用explain分析:
我发现有联合索引键
4.如果只查询area
发现了,依然走着联合索引键
5.但是如果将area删掉,只查title
发现没有进行索引,正在进行全表扫描
6.结论:
只有包含索引关键字左侧的查询(area )才会跟踪合并索引
这是最左边一致原则的例子
二、最左边匹配原则的概念1.mysql会一直向右匹配直到遇到范围查询
(、between、like )停止匹配
-例如:
创建联合索引(a、b、c、d ),如果查询a=3 and b=4 and c5 and d=6,d不可用于索引
但是,只要生成(a、b、d、c ),就可以全部使用,abd的顺序可以任意调整
2. = 和 in 可以乱序
例如,可以按任意顺序创建a=1andb=2andc=3(a、b、c )索引。 mysql查询优化程序可以优化为索引可以识别的形式
三.最左边匹配原则的原因
如图所示:
从虚幻水壶索引中查找所有虚幻水壶叶的节点,按clo2排序查找时,clo3和clo2的统一索引需要clo3,不能只通过clo2进行统一索引。
最左匹配原则的成因:
1.Mysql创建联合索引是首先会对最左边,也就是第一个索引字段进行排序
2.在第一个排序的基础上,再对第二个索引字段进行排序,其实就像是实现了Order by字段1,再Order by 字段2这样一种排序规则
3.所以第一个字段是绝对有序的,而第二个字段就是无序的了
4.因此通常情况下,直接使用第二个字段进行条件判断是用不到索引的。这就是为什么mysql要强调最左匹配原则的成因。