根据您使用Oracle的经验,您将在DATE类型列上设置的索引的最佳类型和设置是什么?
创建集群索引是否公平?
我感兴趣的是优化SELECT * FROM Log WHERE [Date]>等查询的执行。 '20 -06-2009'ORDER BY [Date] DESC,不会大幅减慢插入速度。 (顺便说一下,在现实世界中,我会使用正确的TO_DATE语法来避免截断并丢失索引)
干杯,
答案 0 :(得分:6)
常规指数应该没问题。由于它是一个日志,因此新条目应始终具有增加的日期值,而不是过去的日期,这使得索引附加变得容易。插入物没有大幅减速。
如果遇到上述问题,只考虑更复杂的指数。
此致 ķ
答案 1 :(得分:5)
常规的b树索引是合适的,但如果这是一个日期值越来越大的日志表,那么请注意索引块争用。如果您有很多会话将新值插入索引,并且这些值属于同一个块,那么您可能遇到性能问题。对此的一个缓解是反向键索引,但这会使您提供的类型的查询更加昂贵,因为反向键索引不能支持范围扫描。您将获得完整的索引扫描或快速全索引扫描。
它还会使索引更大,因为索引块拆分将是50/50,而不是Oracle在索引值中检测到向右增长模式时使用的90/10。
答案 2 :(得分:1)
我会重新考虑分区,具体取决于数据量 - Oracle可以在运行查询时使用分区修剪 - 这样可以在以后轻松归档旧的日志数据。