在Oracle中索引表的最佳方法

时间:2013-07-12 06:54:16

标签: oracle indexing

在表中为同一列提供多个索引是一个好习惯吗?

EG。表A包含列col1,col2,col3,col4,col5,col6

索引

  1. Index1 on(col1,col2,col3)
  2. Index2 on(col4,col2,col6)
  3. Index3 on(col2,col1,col3,col4,col5)
  4. 在这种情况下,col1,col2,col3是表A的多个索引的一部分。仅single index的每一列都不够吗?

    same column中使用multiple index有什么用?请澄清。

1 个答案:

答案 0 :(得分:0)

取决于;)

在很多情况下,让几个索引包含相同的列是非常有用的。

另见Ask Tom的这篇文章: Column order in Index

索引是否有帮助取决于您的数据和查询。特别是您的查询返回的记录百分比很重要。

以下示例稍微简化了一下,但一般情况下系统的工作原理如下:

想象一下,您的数据库在每个数据库块上存储10条记录,并且您的查询必须返回所有记录的10%。在这种情况下,必须返回每10条记录。在最坏的情况下,您必须读取每个数据库块(全表扫描)。在这种情况下,索引将减慢查询速度,因为您必须另外读取索引。

何时使用索引有不同的意见。我的经验法则是:

如果选择1%或更少,那么索引是好的

如果选择10%或更多,则全表扫描是好的

其他(1%-9%)需要更详细的分析