我有一个非常大的易失性表。我将主索引设置为customer_id,这是表中最独特的列。但是,通过将其与customer_id,effective_dt和group_id相结合,我可以使主索引更加独特。
通过添加更多字段,我可以使主索引更加独特,但我想知道是否有一个增加更多列的回报减少点?
另外,我注意到,随着我添加唯一主索引的列数越多,创建易失性表所需的时间就越长。只是我的观察,但我不确定这是否属实?
提前致谢。
答案 0 :(得分:1)
基本上,表格的PI应基于以下标准(按重要性排序):
访问:选择经常访问的列(或列组合)。用于连接的最佳情况(即FK)加上可能用于基于相等的WHERE条件
分发:表格不应过分偏差(很多可能会因不同客户而有所不同)。通常偏差高达10-30%(此表的最大尺寸的AMP比平均值多10-30%)是可以接受的。查询dbc.TableSizeV以获取表的每个AMP上使用的实际Permspace。
Volatility :PI应该稳定,而不是大量更新。
桌子的主键完全适合三分之二,但可能不适合最重要的一个。
在您的情况下customer_id
听起来像一个将加入并具有良好分布的列,因此它可能比向PI添加更多列更好。
创建易失性表的时间几乎不同于不同的PI(除非有一个偏差),我希望更多独特的PI更高效。
答案 1 :(得分:0)
我认为如果您的表在客户级别是唯一的,那么我是错误的,那么添加日期字段也不会让它变得独一无二了吗?