【问题标题】:Unique index on every column每列的唯一索引
【发布时间】:2010-07-16 15:36:25
【问题描述】:

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

【问题讨论】:

    标签: database performance oracle10g indices


    【解决方案1】:

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

    从表面上看,这听起来应该被创建为一个 INDEX ORGANIZED 表。

    【讨论】:

    • +1 指出我们拥有唯一索引的主要原因 - 以确保唯一性(谁猜到了)。此外,是的,它应该是 INDEX ORGANIZED 以减少存储的数据量(从而提高 DML 性能)。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2016-03-22
      • 2019-09-19
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      相关资源
      最近更新 更多