多元索引提供了条件过滤、聚合、排序等功能,在创建多元索引后,使用SQL查询时,系统能够充分利用多元索引的计算能力,将部分SQL计算任务下推到多元索引执行,避免全表扫描,从而提高计算效率。
说明
关于多元索引的更多信息,请参见多元索引。
使用场景
如果多元索引包含SQL中涉及的数据列,则SQL引擎会通过多元索引读取数据并下推多元索引支持的算子。例如有一张表exampletable有a、b、c和d四列,多元索引中包含了a、b和c三列并均建立了索引,只有当SQL语句中只涉及a、b和c中的数据列时,才会通过多元索引读取数据。
SELECT a, b, c, d FROM exampletable; /* 多元索引不包含a,b,c,d,扫描全表读取数据,不支持算子下推 */
SELECT a, b, c FROM exampletable; /* 多元索引包含a,b,c,通过多元索引读取数据,支持算子下推 */
前提条件
已创建多元索引。具体操作,请参见创建多元索引。
已创建映射关系。具体操作,请参见创建表的映射关系或创建多元索引的映射关系。
支持下推的算子
当前SQL语句中支持下推到多元索引执行的算子说明请参见下表。
算子类型 | 下推算子 | 下推限制 |
逻辑运算符 | AND、OR | 不支持NOT算子下推。 |
关系运算符 | =、!=、<、<=、>、>=、BETWEEN ... AND ... | 只有数据列和常数的比较才支持算子下推,不支持数据列和数据列比较的算子下推。
|
聚合函数 |
| 聚合函数可以对全部数据或者GROUP BY分组中的数据进行聚合,只有聚合函数支持下推并且函数参数为数据列时才支持算子下推。
|
LIMIT |
| ORDER BY的参数为数据列时才支持算子下推。
|