复合索引(A,B,C,D)仅查A,B,D时能否利用A,B索引优势?
复合索引(A,B,C,D)在查询条件A,B,D下的索引优势问题
- 结论:可以享受A、B部分的索引优势
- 原因:复合索引是按「最左前缀匹配」的规则工作的——只要查询条件包含索引的最左连续列(这里A、B是索引的前两列),数据库就会利用这部分索引来过滤数据。
- 具体逻辑:当查询条件是A、B、D时,数据库会先通过索引的A、B列快速缩小数据范围,定位到所有符合A和B条件的记录,之后再在这个小范围里筛选匹配D条件的数据。这个过程比全表扫描高效得多,因为前面的A、B已经帮数据库排除了大部分无关数据。
- 额外补充:如果是A、D这种条件,就只能用到A列的索引优势,因为中间缺了B列,没法连续匹配索引的后续部分;但A、B、D的情况里,A、B是连续的最左前缀,所以完全可以利用前两列的索引优势。
内容的提问来源于stack exchange,提问作者Niseonna
相关产品推荐
相关产品推荐

