當使用GetRange接口查詢數據時返回指定范圍外的數據時,您可以通過創建二級索引進行數據查詢。
問題現象
在控制臺范圍查詢、SDK范圍查詢、OTS外部表查詢、OTSReader數據同步等場景中,使用GetRange接口查詢數據時,返回的結果與查詢條件中設置的范圍不一致。
可能原因
設置的查詢條件不符合最左匹配原則。例如當第一主鍵列的起始主鍵和結束主鍵分別設置為beginPrimaryKey = INF_MIN
和endPrimaryKey = INF_MAX
,第二主鍵列的起始主鍵和結束主鍵分別設置為beginPrimaryKey = 10
和endPrimaryKey = 10
,則返回的結果為全表數據,而不是第二主鍵列等于10的行。
重要
最左匹配原則表示最左優先,只有當最左主鍵的起止范圍相同時,右側主鍵設置的起止范圍才有效;如果最左主鍵設置的起止范圍不同時,右側主鍵設置的范圍將失效。此處最左主鍵和右側主鍵指表結構中主鍵定義的先后順序。更多信息,請參見GetRange范圍查詢詳解。
解決方案
創建二級索引調整為所需主鍵順序后,請根據實際場景選擇合適的查詢方式。
如果是控制臺范圍查詢、SDK范圍查詢場景,請直接使用二級索引進行范圍查詢。具體操作,請分別參見通過控制臺讀取數據和通過SDK讀取數據。
如果是OTS外部表查詢場景,請在外部表的建表SQL中配置表名稱為二級索引名稱。具體操作,請參見Tablestore外部表。
如果是OTSReader數據同步場景,請在數據同步腳本中配置表名稱為二級索引名稱。具體操作,請參見配置Tablestore(OTS) Reader。
文檔內容是否對您有幫助?