最佳索引组合,给定NDV(不同值的数量)

时间:2019-06-26 14:39:11

标签: sql oracle query-performance

我有一个具有200万行的只读Oracle表。

NDV(每个col的不同值的数目如下)

C1 : 2
C2 : 40000
C3 : 40
C4 : 10000
C5 : 10000
C6 : 2

假设查询对以上所有列进行搜索。

鉴于上述情况,最佳的综合指数组合是什么?

也-忽略由于数据库总是处于READ_ONLY模式而导致DML由于索引增加而减慢的事实。

2 个答案:

答案 0 :(得分:0)

我相信对多列索引的列进行排序的最佳方法是查看针对特定表的所有查询,并将最常引用的那些列放在WHERE子句中的列列表的前面。 -索引压缩是另一个考虑因素:将C1,C6和C3放在前面可能会提供较小的索引。 -否则,如果没有其他考虑,我可能会把C2,C4和C5放在前面。

答案 1 :(得分:0)

我知道了更多信息-它应该包含在问题描述中。

结果表明该数据库是只读数据库。因此,当我们有一个表且基数非常低的几列时,它使其非常适合作为BIT-MAPPED索引的对象。

我在C1,C3,C6列上创建了一个位图索引,它确实提高了性能。