我有 PL/SQL 函数,它返回包含 28 列和 8100 行的游标。当我从 SQL Plus 执行该函数时,我立即得到了结果,而在 SQL Developer 中,我正在运行需要很长时间(大约 80 秒)的脚本。Java 代码也是如此。当列数减少到 2 时,我在不到 4 秒的时间内得到了响应。有人可以解释在这种情况下发生了什么吗?
问问题
938 次
2 回答
1
最简单的实验是更改 SQL Developer 中的“SQL Array Fetch Size”,默认为 50。如果您看到将其增加到 500 的结果,那就是答案。
有趣的是,等效 SQL Plus 参数的默认值只有 15,但正如 APC 所说,SQL Plus 具有原生的优势。
如果更改“SQL Array Fetch Size”没有做任何事情,接下来要看的是 JDBC 设置,SQL Developer 使用它而 SQL*Plus 没有。
于 2010-08-18T13:42:52.467 回答
0
除了我之前的好答案...
一旦返回第一行,SQL*PLus 就会将数据直接发送回屏幕,而 SQL Developer 必须在显示记录之前找到要返回的结果集的大小。
这也许可以解释为什么 SQL Developer 会出现延迟,尤其是在结果集很大或需要很长时间才能完全返回的情况下(例如,如果执行路径很复杂)。
于 2011-07-08T15:03:01.827 回答