表tb1上有索引i1(c1,c2,c3),则以下查询语句使用索引i1扫描时的扫描范围是:SELECT 1 FROM tb1 WHERE C1>? AND C2>? AND c3=?
A. c1>?AND c2>?AND c3=?
B. c3=?
C. c1>?AND c3=?
D. c1>?
表tb1上有索引i1(c1,c2,c3),则以下查询语句使用索引i1扫描时的扫描范围是:SELECT 1 FROM tb1 WHERE C1>? AND C2>? AND c3=?
A. c1>?AND c2>?AND c3=?
B. c3=?
C. c1>?AND c3=?
D. c1>?
这道题考察的是数据库联合索引的最左前缀原则 。
对于联合索引 i1(c1, c2, c3) ,B+树的数据是按照 c1 → c2 → c3 的顺序依次排序存储的。
我们来分析一下查询条件 WHERE C1>? AND C2>? AND c3=? :
C1>? 的起始位置。因此,这个查询在使用索引 i1 时,实际能利用到的扫描范围 仅仅只有第一列的范围条件。
正确答案是:D. c1>?
给我点个采纳呗!
正确答案:D. c1>?
索引 i1(c1, c2, c3) 是一个联合索引,遵循最左匹配原则:
索引的匹配是从最左列 c1 开始,依次向右匹配。
当遇到 ** 范围查询(>、<、BETWEEN 等)** 时,该列及后续列的索引匹配会被 “截断”。
A 。索引扫描范围由c1>?决定,c2>?和c3=?作为过滤条件。
点赞