什么类型的索引最适合Oracle上的DATE类型?

时间:2009-06-11 08:21:01

标签: oracle indexing clustered-index

根据您使用Oracle的经验,您将在DATE类型列上设置的索引的最佳类型和设置是什么?

  • 我不一定需要去分区索引。
  • 这是一种日志记录类表。
  • 你并不真正关心作为主键的唯一身份证明(事实上,约会在大多数情况下足够接近独特,但由于它的性质,永远不会。)

创建集群索引是否公平?

我感兴趣的是优化SELECT * FROM Log WHERE [Date]>等查询的执行。 '20 -06-2009'ORDER BY [Date] DESC,不会大幅减慢插入速度。 (顺便说一下,在现实世界中,我会使用正确的TO_DATE语法来避免截断并丢失索引)

干杯,

3 个答案:

答案 0 :(得分:6)

常规指数应该没问题。由于它是一个日志,因此新条目应始终具有增加的日期值,而不是过去的日期,这使得索引附加变得容易。插入物没有大幅减速。

如果遇到上述问题,只考虑更复杂的指数。

此致 ķ

答案 1 :(得分:5)

常规的b树索引是合适的,但如果这是一个日期值越来越大的日志表,那么请注意索引块争用。如果您有很多会话将新值插入索引,并且这些值属于同一个块,那么您可能遇到性能问题。对此的一个缓解是反向键索引,但这会使您提供的类型的查询更加昂贵,因为反向键索引不能支持范围扫描。您将获得完整的索引扫描或快速全索引扫描。

它还会使索引更大,因为索引块拆分将是50/50,而不是Oracle在索引值中检测到向右增长模式时使用的90/10。

答案 2 :(得分:1)

我会重新考虑分区,具体取决于数据量 - Oracle可以在运行查询时使用分区修剪 - 这样可以在以后轻松归档旧的日志数据。