【问题标题】:executeQuery taking six times as long to run as opposed to when query is run in TOAD与在 TOAD 中运行查询相比,executeQuery 的运行时间是运行时间的六倍
【发布时间】:2011-04-21 14:32:11
【问题描述】:

我继承了一个...嗯,我想我可以称它为 Struts 应用程序的一部分,我的任务是优化 Levey-Jennings 流程,以检查我们的质量控制标准是否符合要求.

该过程本身运行良好,但即使数据集很小,性能时间也总是会出现巨大的峰值。我测试了算法每个部分之间的时间,发现最耗时的是 Java 的 executeQuery() 方法。

最近我运行了应用程序并将执行时间记录为 10 秒。 executeQuery() 自己花费了其中的六秒。想知道问题出在哪里,我将查询带入 TOAD 并逐字逐句运行 - 只用了 1 秒即可运行。

我运行了一个更大的数据集,在 Levey-Jennings 应用程序中运行需要 60 秒,但在 TOAD 中需要 10 秒。

这到底是查询的问题,还是使用 executeQuery() 通常是极度减速的前兆?

【问题讨论】:

    标签: java oracle struts-1 executequery


    【解决方案1】:

    当您在 TOAD(或任何其他 IDE)中运行查询时,此工具希望尽快为您提供您可以看到的结果。通常,它们会向您显示一个包含 10 或 40 行的网格。为了尽可能快地向您显示前 10-40 行,它们提示查询或更改优化环境以尽可能快地生成前 10 行。

    您可以在此处查看有关 FIRST_ROWS 提示的更多信息:http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements006.htm#SQLRF50302

    您的应用程序中的查询可能不使用 FIRST_ROWS 提示。它希望所有行尽可能快。它不关心第一行是否立即出现。所以,这两个查询的优化环境是不同的。

    TOAD 显示生成第一行所花费的时间也无济于事,因为它会让您认为这是获取所有行所花费的时间。不过,有一个选项可以导航到最后一行。按下它,你会发现现在需要更长的时间。

    希望这会有所帮助。

    问候,
    抢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2015-10-15
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多