【发布时间】:2018-07-20 06:11:32
【问题描述】:
在创建表时未定义 teradata 的主索引时,如何以及选择哪一列作为主索引?
【问题讨论】:
-
It's complicated 这是最可能的情况:如果在 CREATE TABLE 语句中没有定义 PRIMARY INDEX、PRIMARY KEY 或 UNIQUE 约束,并且 PrimaryIndexDefault 参数设置为 D或 P,然后 Teradata Database 定义为表定义的第一个符合索引条件的列作为其主索引(因此可能是第一列,但取决于情况)。
-
换句话说,总是总是定义一个 PI。
-
是否有任何标准可以选择任何列作为主索引或只选择第一列。? index eligilble column是什么意思,请详细说明
-
主索引决定了数据的分布方式。如果您的第一列恰好是大多数行具有相同值的字段,那么您的数据将非常不均匀地分布在 AMP 中。这可能会对性能产生严重影响。所以像@Andrew所说的那样明确定义主索引总是更好
-
数据访问和数据分布是选择主索引的关键驱动因素。共享相同主索引的表可以连接在一起,并且数据访问是“AMP-local”。不共享相同主索引的表需要重新分配步骤来满足连接条件。有时,用户希望并且可以在其 WHERE 条件下提供整个主索引,这允许单 AMP 访问数据。最后,答案是“视情况而定”。
标签: teradata