表格存储作为海量结构化大数据存储,支持不同的索引结构,便于不同场景的查询分析加速使用。使用SQL查询功能时,您可以通过显式访问二级索引表进行索引查询。对于多元索引,表格存储提供了自动多元索引选择策略和显式访问多元索引两种方式。
使用二级索引表
当前表格存储不支持自动选择二级索引进行数据查询,您需要手动编写SQL语句创建二级索引表的映射关系。
使用多元索引
当使用SQL进行非主键列查询、多列自由组合查询等复杂查询需求时,推荐您为数据表创建多元索引。创建多元索引后,要通过SQL使用多元索引查询数据时,您可以通过如下任意一种方式进行操作。
自动选择多元索引
如果创建表的映射关系时设置了执行的查询结果要满足强一致性或者不允许通过牺牲聚合操作的精度提升查询性能,则表格存储不会自动选择多元索引进行数据查询。
当未显式指定要访问的多元索引时,如果WHERE子句中所有的过滤列以及SELECT语句中的返回列均在一个多元索引中,表格存储会自动选择该多元索引进行数据查询。例如Select A,B,C from exampletable where A=XXX and D = YY;
语句,如果A、B、C、D列均在exampletable表的同一个多元索引中,则表格存储会自动选择多元索引进行数据查询。
显式访问多元索引
当要通过指定的多元索引查询数据时,您可以使用显式访问多元索引的方式。具体操作如下:
通过CREATE TABLE语句创建多元索引的映射关系。具体操作,请参见创建多元索引的映射关系。
执行SELECT语句查询数据。具体操作,请参见查询数据。
此外,当Groupby、聚合函数等组合使用时,如果符合多元索引Search接口的统计聚合能力,则表格存储也会进行识别并下推算子,关于下推算子的更多信息,请参见计算下推。
附录:多元索引中功能与SQL表达式的映射
多元索引能够实现与SQL表达式相同的功能,具体功能映射信息请参见下表。
SQL表达式 | 示例 | 多元素引中功能 |
without predicate | 不涉及 | |
= |
| |
> | a > 1 | |
>= | a >= 2 | |
< | a < 5 | |
<= | a <= 10 | |
is null | a is null | |
is not null | a is not null | |
and | a = 1 and b = "hello world" | |
or | a > 1 or b = 2 | |
not | not a = 1 | |
!= | a !=1 | |
like | a like "%s%" | |
in | a in (1,2,3) | |
text_match | text_match(a, "tablestore cool") | |
text_match_phrase | text_match_phrase(a, "tablestore cool") | |
array_extract | array_extract(col_long) | |
nested_query | nested_query(`tags.tagName` = 'tag1' AND `tags.score` = 0.2) | |
order by | nested_query col_long | |
limit | limit 10 | |
min() | min(col_long) | |
max() | max(col_long) | |
sum() | sum(col_long) | |
avg() | avg(col_long) | |
count() | count(col_long) | |
count(distinct) | count(distinct col_long) | |
any_value() | any_value(col_long) | |
group by | group by col_long |
相关文档
使用多元索引加速SQL查询数据时,您可以通过多元索引实现全文检索、多元索引数组类型、多元索引嵌套类型、多元索引虚拟列等功能。