mysql 索引最左原则原理
索引本质是一棵B+Tree,联合索引(col1, col2,col3)也是。
其非叶子节点存储的是第一个关键字的索引,而叶节点存储的则是三个关键字col1、col2、col3三个关键字的数据,且按照col1、col2、col3的顺序进行排序。
(图以innodb引擎为例,对应地址指的是数据记录的地址)
联合索引(年龄, 姓氏,名字),叶节点上data域存储的是三个关键字的数据。且是按照年龄、姓氏、名字的顺序排列的。
而最左原则的原理就是,因为联合索引的B+Tree是按照第一个关键字进行索引排列的。
他是按照索引的字段,第一个字段排序,相等的话,则看第二个字段比较大小。 所以如果查询条件跳过第一个字段,直接查询第二、第三,或者是第三字段的话,那么这个是无序的,自然用不了索引。
则 explain 后的执行情况是:
mysql 的索引最左原则就很清晰了。索引多个字段,会按照字段顺序依次比较大小建立索引,如果跳过这个顺序的话,则索引失效。 前提是没有其他索引进行影响
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)