索引选择策略

表格存储作为海量结构化大数据存储,支持不同的索引结构,便于不同场景的查询分析加速使用。使用SQL查询功能时,您可以通过显式访问二级索引表进行索引查询。对于多元索引,表格存储提供了自动多元索引选择策略和显式访问多元索引两种方式。

说明

关于二级索引和多元索引的更多信息,请分别参见二级索引介绍多元索引简介

使用二级索引表

重要

当前表格存储不支持自动选择二级索引进行数据查询,您需要手动编写SQL语句创建二级索引表的映射关系。

表格存储只支持显式访问二级索引表。具体操作如下:

  1. 通过CREATE TABLE语句创建二级索引表的映射关系。具体操作,请参见创建表的映射关系

  2. 执行SELECT语句查询数据。具体操作,请参见查询数据

使用多元索引

当使用SQL进行非主键列查询、多列自由组合查询等复杂查询需求时,推荐您为数据表创建多元索引。创建多元索引后,要通过SQL使用多元索引查询数据时,您可以通过如下任意一种方式进行操作。

自动选择多元索引

重要

如果创建表的映射关系时设置了执行的查询结果要满足强一致性或者不允许通过牺牲聚合操作的精度提升查询性能,则表格存储不会自动选择多元索引进行数据查询。

当未显式指定要访问的多元索引时,如果WHERE子句中所有的过滤列以及SELECT语句中的返回列均在一个多元索引中,表格存储会自动选择该多元索引进行数据查询。例如Select A,B,C from exampletable where A=XXX and D = YY;语句,如果A、B、C、D列均在exampletable表的同一个多元索引中,则表格存储会自动选择多元索引进行数据查询。

显式访问多元索引

当要通过指定的多元索引查询数据时,您可以使用显式访问多元索引的方式。具体操作如下:

  1. 通过CREATE TABLE语句创建多元索引的映射关系。具体操作,请参见创建多元索引的映射关系

  2. 执行SELECT语句查询数据。具体操作,请参见查询数据

此外,当Groupby、聚合函数等组合使用时,如果符合多元索引Search接口的统计聚合能力,则表格存储也会进行识别并下推算子,关于下推算子的更多信息,请参见计算下推

附录:多元索引中功能与SQL表达式的映射

多元索引能够实现与SQL表达式相同的功能,具体功能映射信息请参见下表。

SQL表达式

示例

多元素引中功能

without predicate

不涉及

全匹配查询(MatchAllQuery)

=

  • a = 1

  • b = "hello world"

精确查询(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)

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查询数据时,您可以通过多元索引实现全文检索多元索引数组类型多元索引嵌套类型多元索引虚拟列等功能。