【发布时间】:2014-08-18 15:14:25
【问题描述】:
我有一个执行良好且经过调整的查询。我把它放在一个程序中。当我使用一组值从 SQL 执行查询以绑定其中使用的变量时,最多会在 3-4 秒内生成结果。
来自 refcursor 的相同结果集需要 2 多分钟才能给出结果。我知道可能需要时间的是游标的 OPEN FETCH 和 CLOSE。
我已经确认该过程中没有其他任何东西会消耗时间,因此排除了这种情况。
返回的记录数约为 9000+,这让我想到了一个问题 - 当记录集的大小超出某个限制时,引用游标是否不太适合?
RAM 大小有问题吗?我使用 TOAD 来执行查询和比较过程。是的,我已经去了最后一条记录,所以它不像查询只返回前几条。
还有什么办法可以提高 REFCURSOR 的速度?非常感谢任何帮助。
【问题讨论】:
-
从程序中返回结果后,您将如何处理结果,TOAD 会显示它们吗?如果是这样,问题是否可能在于 TOAD 在呈现 refcursor 的结果时速度很慢?
-
@nineside 该过程只是显示记录。 TOAD 以及读取 JDBC 都需要很长时间来打印记录。直接执行相同的查询(没有过程)在 TOAD 和 JDBC 中都很快。
-
您是否尝试过使用 TKPROF 查看时间都花在了哪里?您是否尝试过运行该过程但不渲染输出?
-
向我们展示程序!
标签: oracle plsql sys-refcursor