Table Store作為海量結構化巨量資料儲存,支援不同的索引結構,便於不同情境的查詢分析加速使用。使用SQL查詢功能時,您可以通過顯式訪問二級索引表進行索引查詢。對於多元索引,Table Store提供了自動多元索引選擇策略和顯式訪問多元索引兩種方式。
使用二級索引表
當前Table Store不支援自動選擇二級索引進行資料查詢,您需要手動編寫SQL語句建立二級索引表的映射關係。
使用多元索引
當使用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會自動選擇多元索引進行資料查詢。
顯式訪問多元索引
當要通過指定的多元索引查詢資料時,您可以使用顯式訪問多元索引的方式。具體操作如下:
通過CREATE TABLE語句建立多元索引的映射關係。具體操作,請參見建立多元索引的映射關係。
執行SELECT語句查詢資料。具體操作,請參見查詢資料。
此外,當Groupby、彙總函式等組合使用時,如果符合多元索引Search介面的統計彙總能力,則Table Store也會進行識別並下推運算元,關於下推運算元的更多資訊,請參見計算下推。
附錄:多元索引中功能與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查詢資料時,您可以通過多元索引實現全文檢索索引、多元索引數群組類型、多元索引巢狀型別、多元索引虛擬列等功能。