本文介紹如何在Lindorm寬表SQL中通過HINT查詢熱資料。
引擎與版本
HINT文法僅適用於寬表引擎,且引擎版本需為2.3.1及以上版本。
前提條件
Lindorm執行個體已開通冷儲存功能,具體操作請參見開通容量型雲端儲存。
使用方法
重要
使用HINT不支援單獨查詢冷資料。
假設表結構及表中資料如下:
-- 建立測試表,指定保留的版本數為5
CREATE TABLE t_test_versions_2 (c1 INT , c2 INT, c3 VARCHAR(50), PRIMARY KEY(c1)) WITH(VERSIONS='5');
-- 插入資料
UPSERT /*+ _l_ts_(1000) */ INTO t_test_versions_2(c1, c3) VALUES (1, '11');
UPSERT /*+ _l_ts_(2001) */ INTO t_test_versions_2(c1, c3) VALUES (1, '22');
UPSERT /*+ _l_ts_(1000) */ INTO t_test_versions_2(c1, c2) VALUES (1, 1);
UPSERT /*+ _l_ts_(2001) */ INTO t_test_versions_2(c1, c2) VALUES (2, 1);
UPSERT /*+ _l_ts_(2002) */ INTO t_test_versions_2(c1, c2) VALUES (2, 2);
UPSERT /*+ _l_ts_(2003) */ INTO t_test_versions_2(c1, c2) VALUES (2, 3);
UPSERT /*+ _l_ts_(2004) */ INTO t_test_versions_2(c1, c2) VALUES (2, 4);
UPSERT /*+ _l_ts_(2005) */ INTO t_test_versions_2(c1, c2) VALUES (2, 5);
UPSERT /*+ _l_ts_(2006) */ INTO t_test_versions_2(c1, c2) VALUES (2, 6);使用HINT僅查詢熱儲存中的資料
您可以在查詢語句中使用HINT,即添加_l_hot_only_(true)參數。以下兩種語句均可查詢熱儲存中的資料。
SELECT /*+ _l_hot_only_ */ * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);
SELECT /*+ _l_hot_only_(true) */ * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);返回結果:
+----+----+------+
| c1 | c2 | c3 |
+----+----+------+
| 1 | 1 | 22 |
| 2 | 6 | null |
+----+----+------+使用HINT查詢所有資料
您可以在查詢語句中設定_l_hot_only_(false)來查詢表的所有資料,包括冷資料和熱資料。
重要
在查詢語句中設定_l_hot_only_(false)與不使用HINT進行查詢,返回結果是相同的。
-- 查詢所有資料,包括冷資料和熱資料
SELECT /*+ _l_hot_only_(false) */ * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);
-- 上述語句查詢結果與不添加HINT參數的查詢結果相同
SELECT * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);返回結果:
+----+----+------+
| c1 | c2 | c3 |
+----+----+------+
| 1 | 1 | 22 |
| 2 | 6 | null |
+----+----+------+