通过HINT查询热数据

本文介绍如何在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 |
+----+----+------+