Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

示例:为 CUSTOMER 表选择压缩编码

下面的语句可创建一个包含不同数据类型列的 CUSTOMER 表。此 CREATE TABLE 语句显示了适用于这些列的众多压缩编码可能组合中的一个。

Copy
create table customer( custkey int encode delta, custname varchar(30) encode raw, gender varchar(7) encode text255, address varchar(200) encode text255, city varchar(30) encode text255, state char(2) encode raw, zipcode char(5) encode bytedict, start_date date encode delta32k);

下表显示了为 CUSTOMER 表选择的列编码并解释了如此选择的理由:

数据类型 编码 说明
CUSTKEY int 增量编码 CUSTKEY 由唯一、连续的整数值组成。差值只需一个字节,因此,DELTA 是很好的选择。
CUSTNAME varchar(30) 原始编码 CUSTNAME 拥有包含少量重复值的大型域。任何压缩编码可能都无效。
GENDER varchar(7) text255 编码 GENDER 是一个包含许多重复值的小型域。Text255 非常适合用于重复出现相同单词的 VARCHAR 列。
ADDRESS varchar(200) text255 编码 ADDRESS 是一个大型域,但包含许多重复单词,如 Street Avenue、North、South 等。Text 255 和 text 32k 对于压缩重复出现相同单词的 VARCHAR 列很有用。列长度较短,因此,text255 是很好的选择。
CITY varchar(30) text255 编码 CITY 是一个包含部分重复值的大型域。某些城市名称较其他城市名称常用得多。Text255 是很好的选择,理由与 ADDRESS 相同。
STATE char(2) 原始编码 在美国,STATE 是一个由 50 个双字符值组成的精确域。Bytedict 编码能够产生一定的压缩效果,但由于列大小只有两个字符,压缩可能还抵不上解压数据产生的开销。
ZIPCODE char(5) bytedict 编码 ZIPCODE 是由不足 50000 个唯一值组成的已知域。某些邮政编码较其他邮政编码常用得多。当列包含有限数量的唯一值时,Bytedict 编码非常有效。
START_DATE date delta32k 编码 增量编码对于 datetime 列非常有用,特别是当行以日期顺序加载时。