本文介绍如何在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 |
+----+----+------+
该文章对您有帮助吗?