【问题标题】:Different execution plans for Toad and Jasper Report?Toad 和 Jasper Report 的执行计划不同?
【发布时间】:2014-04-24 07:11:55
【问题描述】:

我遇到了一个奇怪的情况,从 Toad 运行 SQL 查询需要几秒钟才能完成,而包含相同查询的 Jasper 报告需要半个多小时才能产生结果(使用相同的参数)。以下是一些细节:

  • 我查了一下,Oracle(11g 版)在这两种情况下使用了不同的执行计划。
  • 我考虑过使用存储的大纲,但是报告稍微修改了查询(绑定变量被重命名;在多个值的情况下,即 $P!{...},报告只是将值插入到查询中,然后值的组合太多,无法绕过),所以轮廓不起作用。
  • 我在 iReport 5.1 和 OpenReports 中运行了报告,两者都需要大约 35 分钟。
  • 原始查询已通过一些提示进行了调整,如果没有提示,完成报告所需的时间相当长。

对于如何处理此问题的任何建议,我将不胜感激。

【问题讨论】:

    标签: sql oracle jasper-reports


    【解决方案1】:

    首先,不要使用 TOAD 进行查询调优。尽可能快地向您显示结果集的前几行,以使应用程序尽可能地响应,这符合 TOAD 的兴趣。为此,TOAD 会向您的查询注入 FIRST_ROWS 提示。一个不错的功能,但不适用于调整查询。

    现在,为了解决您的查询耗时过长,我建议您首先调查花费时间的地方。您可以通过跟踪查询执行来做到这一点,如here 所述。完成后,知道时间都花在了哪里,但仍然不知道如何解决,请发布执行计划和统计数据。

    【讨论】:

      【解决方案2】:

      优化器环境可能存在差异。您可以使用

      进行检查
      select * from 
      V$SES_OPTIMIZER_ENV
      where sid = sys_context(’userenv’,’sid’)
      

      在您的 toad 会话和 Jasper 报告中运行此程序并比较结果。

      【讨论】:

        猜你喜欢
        • 2012-06-19
        • 1970-01-01
        • 2020-05-17
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        • 2010-12-26
        相关资源
        最近更新 更多