我需要在列上创建索引以获得更好的性能。该列的类型为timestamp,并且是基于函数的索引。 问题是:此列经常更新。
Oracle文档表示不会对经常修改的列进行索引。
那么有更好的方法来查询此列吗?
修改:
在以下查询中,该列为VALIDATIONTIME:
select *
from orders
where VALIDATIONTIME between
TO_TIMESTAMP('2016/03/06 10:45:18', 'YYYY/MM/DD HH24:MI:SS')
and
TO_TIMESTAMP('2016/03/15 19:50:18', 'YYYY/MM/DD HH24:MI:SS');
答案 0 :(得分:0)
时间戳可以帮助确保高基数,因此它可能是一个不错的选择,但它实际上取决于您用来访问数据的谓词。 如果在不同的工作单元中单独插入行,则timestamp列将只具有良好的基数! 现在我对这个表或它的使用模式一无所知,但它实际上取决于您用来访问数据的谓词。
我们很少会询问有关精确微秒发生的事情的问题。因此,很难看到breakOverflow($('#exlude-me'));
形式的谓词。您更有可能看到范围表达式,例如where timestamp_column = some precise value
,并且通常情况下该谓词将具有伴侣。
作为一个粗略的概括,你可以考虑:
全部取决于查询特征。