使用说明
限制和配额
创建表时,请考虑以下限制。
-
集群中按节点类型的最大表数有限制。有关更多信息,请参阅《Amazon Redshift 管理指南》中的限制。
-
表名的最大字符数为 127。
-
可在单个表中定义的列的最大数目为 1,600。
-
可在单个表中定义的 SORTKEY 列的最大数目为 400。
列级设置和表级设置摘要
可在列级或表级设置若干属性和设置。在某些情况下,在列级或表级设置属性或约束的效果相同。在其他情况下,它们会产生不同的结果。
下面的列表汇总了列级和表级设置:
- DISTKEY
-
无论是在列级设置还是在表级设置,效果是相同的。
如果在列级或表级设置 DISTKEY,则 DISTSTYLE 必须设置为 KEY 或者根本不设置 DISTSTYLE。只能在表级设置 DISTSTYLE。
- SORTKEY
-
如果在列级进行设置,则 SORTKEY 必须为单个列。如果在表级设置 SORTKEY,则一个或多个列可构成复合或交错复合排序键。
- COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE
Amazon Redshift 不支持更改列的区分大小写配置。将新列附加到表中时,Amazon Redshift 会使用默认值区分大小写。在附加新列时,Amazon Redshift 不支持 collate 关键词。
有关如何使用数据库排序规则创建数据库的信息,请参阅CREATE DATABASE。
有关 COLLATE 函数的信息,请参阅COLLATE 函数。
- UNIQUE
-
在列级别,可将一个或多个键设置为 UNIQUE;UNIQUE 约束分别应用于每个列。如果在表级设置 UNIQUE,则一个或多个列可构成复合 UNIQUE 约束。
- PRIMARY KEY
-
如果在列级进行设置,则 PRIMARY KEY 必须为单个列。如果在表级设置 PRIMARY KEY,则一个或多个列可构成复合主键。
- FOREIGN KEY
-
无论是在列级设置还是在表级设置 FOREIGN KEY,效果是相同的。在列级别,语法为
REFERENCESreftable [ ( refcolumn )]。
分配传入数据
如果传入数据的哈希分配方案与目标表的哈希分配方案匹配,则在加载数据时,没有实际必要的数据物理分配。例如,如果为新表设置分配键并从相同键列上分配的另一个表中插入数据,则使用相同的节点和切片就地加载数据。不过,如果源表和目标表都设置为 EVEN 分配,则数据将重新分配到目标表。
宽表
您也许能够创建很宽的表,但无法对表执行查询处理,例如 INSERT 或 SELECT 语句。具有宽度固定的列(例如 CHAR)的表的最大宽度为 64KB - 1(即 65535 字节)。如果表包含 VARCHAR 列,则表可以具有更大的声明宽度,而不会返回错误,因为 VARCHARS 列不会将其完全声明的宽度计入计算出的查询处理限制。针对 VARCHAR 列的有效查询处理限制将因大量因素而异。
如果表对于插入或选择操作来说太宽,您将收到以下错误。
ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)