每列的唯一索引

时间:2010-07-16 15:36:26

标签: database performance oracle10g indices

所以我在这里看着这个巨大的oracle 10g表。我查看了它的索引,看到所有列都在一个唯一索引下。这实际上是否提供了任何性能优势?

2 个答案:

答案 0 :(得分:2)

可能,可能不是。可能是唯一索引正在实现约束以确保行确实是唯一的,并且根本不旨在帮助提高性能。索引查找查询可能会带来性能优势,因为它们根本不需要访问实际的表。

从表面上看,它应该是作为INDEX ORGANIZED表创建的。

答案 1 :(得分:0)

从性能的角度来看,我会说将单个索引中的所有字段(无论是否唯一)通常都不是一个好主意。

  • 对表的任何更新都将导致该索引被更新。在“普通”表(普通单词使用非常松散)中,会有一些字段未编入索引。如果更新了其中一个字段,则效率更高,因为不需要更新索引。
  • 所描述的索引在查询优化方面有所限制。例如,假设表具有字段a,b,c,d和e,并且索引是使用该顺序中的字段定义的。任何在WHERE子句中未引用a的查询都不能使用该索引。
  • 根据所涉及字段的数量和大小,这样的索引可能具有非常大的键。使用更大的密钥,意味着每个页面中可以存储更少的密钥,因此对索引的更新意味着将涉及更多的页面读取和写入。