我创建了一个按年分区的表,我在表上创建了以下两个本地非唯一索引
idx1:(year,wk,pd,sku) idx2:(sku,str)
我的不足之处是idx2是多余的,你可以创建 使用(year,wk,pd,sku,str)的一个索引来获取跳过扫描的优势。 有什么想法或意见吗?
答案 0 :(得分:0)
假设您的查询仅指定sku
和str
,则idx2
不多余。
使用idx1
,你至少还有52周x? (不知道pd
是什么......)= 52个或更多索引子树,INDEX SKIP SCAN
可以浏览,每个分区。
INDEX SKIP SCAN
上的idx1
将执行52个以上的索引探测。 INDEX RANGE SCAN
上的idx2
将针对每个分区进行一次探测(通过将其作为全局索引,可以减少到1个整体探测)。
因此,idx2
提供了好处。这些好处是否证明表上第二个索引的成本取决于您的使用模式(写入与读取)和性能目标。
答案 1 :(得分:0)
索引分区键是多余的,因为分区修剪将有效地“索引”该字段,并且在任何索引读取之前进行修剪。此时,跳过扫描将正常运行,假设优化器未对跳过扫描的分数高于完整分区扫描。