DB专题:2.组和索引最左匹配的原理

2019-02-17  本文已影响0人  北交吴志炜

图片截自O'Reilly.High.Performance.MySQL.3rd.Edition 第五章

比如有如下表结构,其中有组合索引(lastname,firstname,birthday(dob))


table.png

那么索引的结构如下


222.png

可以看到,索引的指向是按照索引列的顺序进行排序的,比如上图第一行,先按lastname排;上图第三行,lastname相同,按照firstname来排;右下角比如lastname,firstname都相同,那么按照birthday来排序。同理,组合索引的查找,也是先找第一列,再找第二列,最后找第三列。反之,如果上来直接找第二列,是没办法找的,因为不考虑第一列顺序的情况下,第二列其实是乱序的。

总结:最左匹配是由组合索引内部指向节点的组织结构决定的。查询语句只要能最左匹配,就可以用上索引
(这个最左匹配是查询项的概念,比如有(a,b,c)的索引,用户查询语句是c,b,a,其实dbms会将查询语句优化为a,b,c然后来走索引,但是如果查询条件是b,c,那么dbms是无能为力的)

上一篇 下一篇

猜你喜欢

热点阅读