1
回答
MySQL联合索引问题
【腾讯云】学生服务器套餐10元/月 >>>   

如图:答案是BCDE,A是全部使用了,有个问题想不明白:

where和order by 哪个先执行呢?

B选项:如果c4=x先执行,那么order by c3 就不会使用索引了吧,事实是先执行order by c3    这点不明白

请高人赐教

举报
共有1个答案 最后回答: 1年前

先筛选后排序。关于B选项,实际上索引的C4部分是根本没用到,因为筛选的时候,不能跳过C3直接用C4,所以,实际的操作是通过C1,C2选择了B+树叶子节点的搜索开头位置和结束未知,而这两个节点的链表顺序本身是按C3排序的(所以order by能用到C3),最后就是取两个叶子节点间的节点通过C4确定最终记录(辅助索引和聚集索引的差异暂不讨论)。

关于这部分,楼主可以看看《MySQL技术内幕》关于InnoDB B+树索引的内容就能理解了。

顶部