如何以及选择哪一列作为Teradata中的主索引

时间:2018-07-11 11:39:29

标签: teradata

在创建表时未定义时,如何以及将哪一列选择为teradata中的主索引?

1 个答案:

答案 0 :(得分:2)

如果不定义索引,Teradata将隐式将第一行作为主索引。除此之外,您可以选择一个或多个列作为主索引,或者通过NO PRIMARY INDEX定义表。 主索引将定义AMPS上数据的分发密钥。如果未定义NO PRIMARY INDEX,它将为RoundRobin。

选择PI是Physical Design的一部分,没有答案可以完全统治它们。文档中有一个专门的文档涵盖了该主题(“数据库设计”)。您必须想到:

1)分配数据(防止高偏斜)

2)可能的访问权限和加入权限

广告1)应该清楚

ad 2)由于数据是在PI上分布的,因此不同于PI的GROUP BY或具有PI以外的Join-Fields的JOIN(至少PI必须是它的一部分)将导致假脱机数据重新分配。 -这对查询的性能不利。

如果您想用数据测试不同的PI,则可以使用以下SQL通过SQL进行测试(例如myTable,其PI的列为column_1和column_2):

SELECT HASHAMP (HASHBUCKET (HASHROW (column_1,column_2))) as targetAMP
      ,COUNT (*) as CountRecords
  FROM myTable
 GROUP BY targetAMP;