Mysql索引底层数据结构,索引失效的原因(符合最左匹配原则)
·
Mysql索引底层数据结构
哈希索引

哈希值是无序的,不可以范围查找,排序的话,也不能使用哈希值进行排序,而且会有哈希冲突
平衡二叉树

树越高查询速度越慢,还有一种情况就是不如查找大于五的数据,需要进行数据回旋,所以平衡二叉树不是最好的选择
B树

可以看出,B树一个节点可以存多个值,解决了二叉树的高度的问题,树越矮查找速度就越快,但是B树还有回旋查找的问题。
B+树

加入了链表,B+树完美解决了回旋查找的问题
索引失效的原因
多个键值的B+树:


可以看出来:a值是有顺序的,当a相同的时候b值才有顺序,同理字母也是按照顺序排序A-Z

这里面的"1212",就相当于a,如果没有遵循最左前缀法则,b就是无序的,想要在无序中找到b里面的记录,是用不到索引的,只能进行全表扫描
当查询语句使用>号的时候,索引失效

即使确定了大于1的数据,2,但是对应的值也是无需的。
同理,当查询条件使用%作为前缀的时候,索引失效

可以以%为后缀,如果%作为前缀的时候,值是没有顺序的
还有很多情况都会失效,同理在这里就不多说了。
更多推荐



所有评论(0)