组合索引中列的顺序问题
组合索引中列的顺序对执行计划的影响比较大。下面先简单介绍组合索引的适用场景,后面
再根据一个具体的 SQL 说说组合索引中列的顺序对 DM7 执行计划的影响。
1、使用组合索引查询的场景
兹有 Index (A,B,C) ——组合索引多字段是有序的,并且是个完整的 BTree 索引。
下面条件可以用该组合索引查询:
A>5
A=5 AND B>6
A=5 AND B=6 AND C=7
A=5 AND B IN (2,3) AND C>5
下面条件将不能用该组合索引查询:
B>5 ——查询条件不包含组合索引首列字段
B=6 AND C=7 ——查询条件不包含组合索引首列字段
下面条件将能用部分组合索引查询:
A>5 AND B=2 ——当范围查询使用第一列,查询条件仅仅能使用第一列
A=5 AND B>6 AND C=2 ——范围查询使用第二列,查询条件仅仅能使用前二列
2、使用组合索引排序的各种场景
兹有组合索引 Index(A,B)。
下面条件可以用该组合索引排序:
ORDER BY A——首列排序
A=5 ORDER BY B——第一列过滤后第二列排序
ORDER BY A DESC, B DESC——注意,此时两列以相同顺序排序
A>5 ORDER BY A——数据检索和排序都在第一列
下面条件不能用该组合索引排序:
评论