Teradata - 主索引字段和性能

Teradata - Primary Index Fields and Performance

我有一个非常大的 volatile table。我将主索引设置为 customer_id,这是 table 上最独特的列。但是,我可以通过将主索引与 customer_id、effective_dt 和 group_id 组合起来使它更加独特。

我可以通过添加更多字段使主索引更加独特,但我想知道添加更多列是否有减少 return 的意义?

此外,我注意到随着我添加唯一主索引的列越多,创建易失性 table 所需的时间就越长。只是我的观察,但我不确定这是不是真的?

提前致谢。

基本上 table 的 PI 应该基于以下标准(按重要性排序):

  1. 访问:选择访问量大的列(或列组合)。在最好的情况下用于连接(即 FK)加上可能用于基于相等性的 WHERE 条件

  2. 分布:table不应该偏斜太多(much可能有不同的定义针对不同的客户)。通常偏差高达 10-30%(此 table 的最大尺寸的 AMP 比平均值多 10-30% 的数据)是 acceptable。查询 dbc.TableSizeV 以获得 table.

  3. 每个 AMP 上使用的实际 Permspace
  4. 波动率:PI应该是stable,更新不多。

table 的主键非常适合三分之二的主键,但可能不适合最重要的主键。

在您的情况下,customer_id 听起来像是一个将被连接并具有良好分布的列,因此它可能比向 PI 添加更多列更好。

创建 Volatile Table 的时间应该随不同的 PI 几乎没有区别(除非有偏差),我希望更多独特的 PI 会更有效率。

我认为如果您的 table 在客户级别是唯一的,那么添加日期字段并不能使它不再唯一,我是不是错了?