Oracle分区和本地Indexex(12c)

时间:2017-10-12 20:10:07

标签: oracle physical-design

我创建了一个按年分区的表,我在表上创建了以下两个本地非唯一索引

idx1:(year,wk,pd,sku) idx2:(sku,str)

我的不足之处是idx2是多余的,你可以创建 使用(year,wk,pd,sku,str)的一个索引来获取跳过扫描的优势。 有什么想法或意见吗?

2 个答案:

答案 0 :(得分:0)

假设您的查询仅指定skustr,则idx2 多余。

使用idx1,你至少还有52周x? (不知道pd是什么......)= 52个或更多索引子树,INDEX SKIP SCAN可以浏览,每个分区

INDEX SKIP SCAN上的idx1将执行52个以上的索引探测。 INDEX RANGE SCAN上的idx2将针对每个分区进行一次探测(通过将其作为全局索引,可以减少到1个整体探测)。

因此,idx2提供了好处。这些好处是否证明表上第二个索引的成本取决于您的使用模式(写入与读取)和性能目标。

答案 1 :(得分:0)

索引分区键是多余的,因为分区修剪将有效地“索引”该字段,并且在任何索引读取之前进行修剪。此时,跳过扫描将正常运行,假设优化器未对跳过扫描的分数高于完整分区扫描。