全部產品
Search
文件中心

Tablestore:索引選擇策略

更新時間:Jul 31, 2024

Table Store作為海量結構化巨量資料儲存,支援不同的索引結構,便於不同情境的查詢分析加速使用。使用SQL查詢功能時,您可以通過顯式訪問二級索引表進行索引查詢。對於多元索引,Table Store提供了自動多元索引選擇策略和顯式訪問多元索引兩種方式。

說明

關於二級索引和多元索引的更多資訊,請分別參見二級索引介紹多元索引簡介

使用二級索引表

重要

當前Table Store不支援自動選擇二級索引進行資料查詢,您需要手動編寫SQL語句建立二級索引表的映射關係。

Table Store只支援顯式訪問二級索引表。具體操作如下:

  1. 通過CREATE TABLE語句建立二級索引表的映射關係。具體操作,請參見建立表的映射關係

  2. 執行SELECT語句查詢資料。具體操作,請參見查詢資料

使用多元索引

當使用SQL進行非主鍵列查詢、多列自由組合查詢等複雜查詢需求時,推薦您為資料表建立多元索引。建立多元索引後,要通過SQL使用多元索引查詢資料時,您可以通過如下任意一種方式進行操作。

自動選擇多元索引

重要

如果建立表的映射關係時設定了執行的查詢結果要滿足強一致性或者不允許通過犧牲彙總操作的精度提升查詢效能,則Table Store不會自動選擇多元索引進行資料查詢。

當未顯式指定要訪問的多元索引時,如果WHERE子句中所有的過濾列以及SELECT語句中的返回列均在一個多元索引中,Table Store會自動選擇該多元索引進行資料查詢。例如Select A,B,C from exampletable where A=XXX and D = YY;語句,如果A、B、C、D列均在exampletable表的同一個多元索引中,則Table Store會自動選擇多元索引進行資料查詢。

顯式訪問多元索引

當要通過指定的多元索引查詢資料時,您可以使用顯式訪問多元索引的方式。具體操作如下:

  1. 通過CREATE TABLE語句建立多元索引的映射關係。具體操作,請參見建立多元索引的映射關係

  2. 執行SELECT語句查詢資料。具體操作,請參見查詢資料

此外,當Groupby、彙總函式等組合使用時,如果符合多元索引Search介面的統計彙總能力,則Table Store也會進行識別並下推運算元,關於下推運算元的更多資訊,請參見計算下推

附錄:多元索引中功能與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查詢資料時,您可以通過多元索引實現全文檢索索引多元索引數群組類型多元索引巢狀型別多元索引虛擬列等功能。