全部產品
Search
文件中心

Tablestore:使用GetRange介面查詢資料時返回指定範圍外的資料

更新時間:Jul 23, 2024

當使用GetRange介面查詢資料時返回指定範圍外的資料時,您可以通過建立二級索引進行資料查詢。

問題現象

在控制台範圍查詢、SDK範圍查詢、OTS外部表格查詢、OTSReader資料同步等情境中,使用GetRange介面查詢資料時,返回的結果與查詢條件中設定的範圍不一致。

可能原因

設定的查詢條件不符合最左匹配原則。例如當第一主鍵列的起始主鍵和結束主鍵分別設定為beginPrimaryKey = INF_MINendPrimaryKey = INF_MAX,第二主鍵列的起始主鍵和結束主鍵分別設定為beginPrimaryKey = 10endPrimaryKey = 10,則返回的結果為全表資料,而不是第二主鍵列等於10的行。

重要

最左匹配原則表示最左優先,只有當最左主鍵的起止範圍相同時,右側主鍵設定的起止範圍才有效;如果最左主鍵設定的起止範圍不同時,右側主鍵設定的範圍將失效。此處最左主鍵和右側主鍵指表結構中主鍵定義的先後順序。

解決方案

建立二級索引調整為所需主鍵順序後,請根據實際情境選擇合適的查詢方式。

  • 如果是控制台範圍查詢、SDK範圍查詢情境,請直接使用二級索引進行範圍查詢。具體操作,請分別參見通過控制台讀取資料通過SDK讀取資料

  • 如果是OTS外部表格查詢情境,請在外部表格的建表SQL中配置表名稱為二級索引名稱。具體操作,請參見Tablestore外部表格

  • 如果是OTSReader資料同步情境,請在資料同步指令碼中配置表名稱為二級索引名稱。具體操作,請參見配置Tablestore(OTS) Reader