如何提高针对具有数百个高基数列和数百万条记录的表的即席查询的性能?
在我的例子中,我有一个表,其中包含一个索引DATE
列SDATE
、一VARCHAR2
列NE
和 750 个数字列,其中大部分是高基数列,其值在0 to 100
. 该表几乎20000
每小时都会更新一次新记录。针对此表的查询如下所示:
SELECT * FROM TAB WHERE SDATE BETWEEN :SDATE AND :EDATE AND V1 > :V1 AND V3 < :V3
或者
SELECT * FROM TAB WHERE SDATE BETWEEN :SDATE AND :EDATE AND NE = :NE AND V4 > :V4
等等
到目前为止,我一直建议用户不要输入大间隔日期,以限制日期索引访问路径产生的记录数;但是,有时需要指定更大的间隔。
如果V1, V2, ..., V750
都是低基数列,我将能够利用位图索引。不幸的是,他们不是。
对此有何建议?我应该如何解决这个问题?
谢谢。