【发布时间】:2010-08-04 17:25:40
【问题描述】:
我有一个 PL/SQL 函数,它返回包含 28 列和 8100 行的游标。当我从 SQL Plus 执行该函数时,我立即得到了结果,而在 SQL Developer 中,我正在运行需要很长时间(大约 80 秒)的脚本。 Java 代码也是如此。当列数减少到 2 时,我在不到 4 秒的时间内得到了响应。有人可以解释一下这种情况下发生了什么吗?
【问题讨论】:
-
SQL Developer 也是用 Java 编写的,而 SQL*Plus 是本机代码。所以有一个线索。你的桌子是什么样子的?
-
这是一个远程数据库吗?如果 SQL*Plus 与数据库在同一台服务器上运行,并且 SQL Developer 正在通过网络访问它,那么这可能是一个因素,特别是如果您有 LOB 数据,或者返回的列的大小未知(所以它必须分配比实际需要更多的内存和带宽)。大概您可以通过在本地运行 Java 版本来检查。也可以从 Java 中指定列大小,看看是否有帮助。
-
显然不是,SQL Developer 除了用于与数据库智能交互的简化工具(称为:SQLPLUS)之外,还有更多层。可能会降低性能的东西只是在屏幕上显示数据。如果您让大量数据在您的窗口上滚动,它可能会严重变慢。在这种情况下,只需将另一个不相关的窗口(Windows 资源管理器、浏览器、..)全屏,直到查询完成。
标签: oracle plsql oracle10g sqlplus oracle-sqldeveloper