对字符串列进行编码有助于加快对访问这些列的查询的处理。HeatWave 支持两种字符串列编码类型:
变长编码 (
VARLEN
)字典编码 (
SORTED
)
当表加载到 HeatWave 中时,可变长度编码默认应用于CHAR
、
VARCHAR
和
TEXT
-type 列。要使用字典编码,您必须
RAPID_COLUMN=ENCODING=SORTED
在加载表之前在列注释中定义关键字字符串。关键字字符串必须大写;否则,它会被忽略。
CREATE TABLE
您可以在or
ALTER TABLE
语句
中定义关键字字符串
,如下所示:
CREATE TABLE orders (name VARCHAR(100) COMMENT 'RAPID_COLUMN=ENCODING=SORTED');
ALTER TABLE orders MODIFY name VARCHAR(100) COMMENT 'RAPID_COLUMN=ENCODING=SORTED';
RAPID_COLUMN=ENCODING=VARLEN
如有必要,您可以使用关键字字符串
显式指定可变长度编码
。
列注释中允许包含其他信息。例如,允许在列编码关键字字符串旁边指定列描述:
COMMENT
'
column_description
RAPID_COLUMN=ENCODING=SORTED'
对于字符串列编码建议,请在将表加载到 HeatWave 并运行查询后使用 Advisor 实用程序。有关详细信息,请参阅 第 2.7.3 节“使用 Advisor 优化工作负载”。
要修改或删除字符串列编码,请参阅 第 2.4 节“修改表”中描述的过程。
如果您打算运行JOIN
涉及字符串列的操作或使用字符串函数和运算符,建议使用可变长度编码。可变长度编码比字典编码提供更多的表达式、过滤器、函数和运算符支持。否则,根据字符串列中不同值的数量相对于表的基数来选择编码类型。
可变长度编码 (
VARLEN
) 最适合具有大量不同值的列,例如“评论”列。字典编码 (
SORTED
) 最适合不同值数量较少的列,例如“国家”列。
可变长度编码需要空间用于 HeatWave 节点上的列值。字典编码需要 MySQL 数据库系统节点上的空间用于字典。
下表提供了编码类型特征的概述:
表 2.1 列编码类型特征
编码类型 | 表达式、过滤器、函数和运算符支持 | 最适合 | 所需空间 |
---|---|---|---|
Variable-length (VARLEN) |
支持JOIN 操作、字符串函数和运算符以及LIKE 谓词。请参阅
第 2.12.1 节,“可变长度编码”。 |
具有大量不同值的列 | HeatWave 节点 |
Dictionary (SORTED) |
不支持JOIN 操作、字符串函数和运算符或LIKE 谓词。 |
不同值数量较少的列 | MySQL 数据库系统节点 |
有关字符串列编码的其他信息,请参阅 第 2.12 节,“字符串列编码参考”。