Teradata - 什么指数策略最好?

时间:2017-10-30 13:52:32

标签: sql teradata

例如,我必须创建一个包含以下字段的表:

client_id (num) 
local_id (num)
unit_id (char)
category (char)
first_product_date (date)

client_id是独一无二的。所有字段都将用于连接,WHERE等。 请解释一下,使用索引的方法最好,为什么?

1)初级唯一+次要的其他

PRIMARY UNIQUE INDEX (client_dk)
SECONDARY INDEX (local_id, unit_id, category, first_product_date)

2)主要非独特+次要的其他

PRIMARY INDEX (client_dk)
SECONDARY INDEX (local_id, unit_id, category, first_product_date)

3)所有小学

PRIMARY INDEX (client_dk, local_id, unit_id, category, first_product_date)

4)初级中的次要独特+其他

PRIMARY INDEX (local_id, unit_id, category, first_product_date)
SECONDARY UNIQUE INDEX (client_dk)

5)其他任何方式?

THX!

1 个答案:

答案 0 :(得分:0)

TD索引的一些注释:

您的主要索引是最重要的索引 - 根据以下内容选择:

1)访问 - 如何从表中访问数据
2)分布 - 数据的独特性 - > PI值哈希用于存储/定位行
3)波动性 - PI值经常变化的频率 - >减少数据重定位

理想情况下,您需要一个唯一索引,但这实际上取决于计划访问数据的方式。拥有非唯一索引并不一定是坏事。

要定位特定问题查询和表格,您可以尝试:

1)使用DIAGNOSTIC HELPSTATS FOR SESSION查看特定查询的推荐统计数据。对您的查询运行EXPLAIN,您将获得一些统计信息收集提示。

2)玩连接索引。

3)如前所述,二级索引并不总是非常有用。所以不要在整个地方创造它们。

和前面的人一样,弄清楚所有表格之间的关系以及您计划询问数据的问题类型。这将决定你的指数选择。

相关问题