美文网首页
Mysql 最左前缀原理

Mysql 最左前缀原理

作者: MakeACoder | 来源:发表于2018-01-05 10:39 被阅读0次

你可以认为联合索引是闯关游戏的设计

例如你这个联合索引是state/city/zipCode

那么state就是第一关 city是第二关, zipCode就是第三关

你必须匹配了第一关,才能匹配第二关,匹配了第一关和第二关,才能匹配第三关

你不能直接到第二关的

索引的格式就是第一层是state,第二层才是city

假设数据 表T (a,b,c) rowid 为物理位置
rowid a b c
(1) 1 1 1
(2) 2 1 13
(3) 2 2 14
(4) 1 3 3
(5) 2 3 12
(6) 1 2 5
(7) 2 3 9
(8) 1 2 2
(9) 1 3 6
(10) 2 2 11
(11) 2 2 8
(12) 1 1 7
(13) 2 3 15
(14) 1 1 4
(15) 2 1 10

当你创建一个索引 create index xxx on t(a,b), 则索引文件逻辑上等同于如下
a b rowid
1 1 1
1 1 12
1 1 14
1 2 6
1 2 8
1 3 4
1 3 9
2 1 2
2 1 15
2 2 3
2 2 10
2 2 11
2 3 5
2 3 7
2 3 13

当select * from T where a=1 and b=3 的时候, 数据库系统可以直接从索引文件中直接二分法找到A=1的记录,然后再B=3的记录。(如果这里是需要找b=5则在a=1下面直接找没找到就能确定这个sql查不到对应的结果了。 不用整个遍历了。 因为即使其他地方有b=5 也不满足a=1 所以无对应结果)
但如果你 where b=3 则需要遍历这个索引表的全部!

相关文章

  • Mysql 最左前缀原理

    你可以认为联合索引是闯关游戏的设计 例如你这个联合索引是state/city/zipCode 那么state就是第...

  • MySQL 索引优化

    一. 最左前缀原理 以 MySQL 官方示例数据库 employees 的 titles 表的 主键索引来进行...

  • 索引最左前缀匹配

    最左前缀原理 联合索引中查找遵循最左前缀原理:例如,建立如下(a,b,c,d)的联合索引,索引结构会按照a,b,c...

  • 我去,为什么最左前缀原则失效了?

    问题 最近,在 mysql 测试最左前缀原则,发现了匪夷所思的事情。根据最左前缀原则,本来应该索引失效,走全表扫描...

  • 索引

    这道题目考察的知识点是MySQL组合索引(复合索引)的最左优先原则。 最左前缀匹配原则 在mysql建立联合索引时...

  • Mysql索引失效

    mysql 索引失效的原因有哪些?Mysql索引失效的原因 1、最佳左前缀原则——如果索引了多列,要遵守最左前缀原...

  • 11.MySQL组合索引的有序性

    组合索引的有序性和最左前缀原理【强制】理解组合索引最左前缀原则,避免重复建设索引,如果建立了(a,b,c),相当于...

  • MySQL 最左前缀原则

    假设数据 表 T (a,b,c) rowid 为物理位置 当你创建一个索引 create index xxx on...

  • MySQL最左前缀原则

    通过实例理解单列索引、多列索引以及最左前缀原则 实例:现在我们想查出满足以下条件的用户id: mysql>SELE...

  • MySQL索引最左前缀

    MySQL中的索引可以以一定顺序引用多个列,这种索引叫做联合索引,一般的,一个联合索引是一个有序元组,其中各个元素...

网友评论

      本文标题:Mysql 最左前缀原理

      本文链接:https://www.haomeiwen.com/subject/zlpjnxtx.html