联合索引,范围查询后,后面的字段不走索引

是B+树的结构决定的。

底层B+树叶子节点的键值是通过链表连接的,而组合索引是从左向右按照索引字段的顺序进行查找,只有当前一个索引列是确定值的时候,下一个索引列的值才是递增的状态,才能通过B+树遍历得到,而一旦前一个索引列是范围匹配,则之后的索引列的值不存在递增关系,那么就没办法通过B+树遍历得到。

例如,以下联合索引。A>=2,B=4的查询过程。a=2时,B是有序的,a=3时,b是无序的,就不能继续向下查找了。必须在前一个是定值的情况下,才能继续向下查找。

 

你可能感兴趣的:(数据库,数据库,索引)