表格存储作为海量结构化大数据存储,支持不同的索引结构,便于不同场景的查询分析加速使用。使用SQL查询功能时,您可以通过显式访问二级索引表进行索引查询。对于多元索引,表格存储提供了自动多元索引选择策略和显式访问多元索引两种方式。
使用二级索引表
注意 当前表格存储不支持自动选择二级索引进行数据查询。
使用多元索引
当使用SQL进行非主键列查询、多列自由组合查询等复杂查询需求时,推荐您为数据表创建多元索引。创建多元索引后,要通过SQL使用多元索引查询数据时,您可以通过如下任意一种方式进行操作。
- 显式访问多元索引
当要通过指定的多元索引查询数据时,您可以使用显式访问多元索引的方式。具体操作如下:
- 通过CREATE TABLE语句创建多元索引的映射关系。具体操作,请参见创建多元索引的映射关系。
- 执行SELECT语句查询数据。具体操作,请参见查询数据。
- 自动选择多元索引
注意 如果创建表的映射关系时设置了执行的查询结果要满足强一致性或者不允许通过牺牲聚合操作的精度提升查询性能,则表格存储不会自动选择多元索引进行数据查询。
当未显式指定要访问的多元索引时,如果WHERE子句中所有的过滤列以及SELECT语句中的返回列均在一个多元索引中,表格存储会自动选择该多元索引进行数据查询。例如
Select A,B,C from exampletable where A=XXX and D = YY;
语句,如果A、B、C、D列均在exampletable表的同一个多元索引中,则表格存储会自动选择多元索引进行数据查询。
此外,当Groupby、聚合函数等组合使用时,如果符合多元索引Search接口的统计聚合能力,则表格存储也会进行识别并下推算子,关于下推算子的更多信息,请参见计算下推。
多元索引中Search查询与SQL表达式的映射
SQL表达式 | 示例 | 多元素引中Search查询 |
---|---|---|
without predicate | 不涉及 | 全匹配查询(MatchAllQuery) |
= |
|
精确查询(TermQuery) |
> | a > 1 | 范围查询(RangeQuery) |
>= | a >= 2 | |
< | a < 5 | |
<= | a <= 10 | |
is null | a is null | 列存在性查询(ExistsQuery) |
is not null | a is not null | |
and | a = 1 and b = "hello world" | 多条件组合查询(BoolQuery) |
or | a > 1 or b = 2 | |
not | not a = 1 | |
!= | a !=1 | |
like | a like "%s%" | 通配符查询(WildcardQuery) |
in | a in (1,2,3) | 多词精确查询(TermsQuery) |
text_match | text_match(a, "tablestore cool") | 匹配查询(MatchQuery) |
text_match_phrase | text_match_phrase(a, "tablestore cool") | 短语匹配查询(MatchPhraseQuery) |