【问题标题】:Oracle Indexing & SP PerformanceOracle 索引和 SP 性能
【发布时间】:2011-11-04 07:44:09
【问题描述】:

我正在尝试针对由 6 个表构建的 Oracle 视图优化一些旧版 SQL SP,每个表由相同的字段(一个数字 ID)连接。视图中的一些表有一个索引,它完全是这个 ID 字段,其他的则没有。

如果我只使用该字段在视图中的其余表上创建索引,然后使用该字段作为唯一参数执行实际的选择查询,它会显着提高性能吗?如果有必要,我可以发布 s.proc,因为 SP 中可能存在其他可能无法通过单独索引来解决的缺陷。有问题的查询需要大约 6 秒才能返回 1 行,没有一个表包含大量记录,无论如何也不超过 100,000 条记录。

提前致谢,

斯科特

【问题讨论】:

  • ID字段是索引的第一个字段吗?索引是否聚集?您是从视图中选择所有行,还是根据 ID 选择少量行?
  • ID 字段是所有现有索引中的第一个字段,就像我说的几个表缺少该字段上的索引一样。是不是成群结队了,不知道。在 idx 创建(使用 PL/SQL 开发人员)的任何地方,我都看不到对集群或非集群的引用。根据提供的 ID,查询应该只返回 1 行。
  • Scott,你能提供查询生成的解释计划吗?这将有助于为您提供有关调整查询的更好建议。
  • Scott,如果可以的话,继续发布 SP 代码,它也可能会导致您的一些性能问题。

标签: sql database oracle indexing database-performance


【解决方案1】:

确保视图中的每个表都有一个以 id 字段开头的索引。只要 id 字段在前,索引就可以包含更多字段。

如果这对性能没有帮助,请发布选择语句和解释计划。

【讨论】:

    【解决方案2】:

    如果 ID 字段是索引中的第一列(或唯一列),那么在返回少量行的情况下,将索引添加到需要它们的剩余表的 ID 列将改进查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2016-05-30
      • 2011-01-24
      • 2017-06-23
      • 2017-02-07
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多