为什么PLSQL比SQL*Plus慢

Bra*_*uce 6 oracle performance plsql

我有几个Oracle查询在运行SQL*PLUS时表现良好.但是,当它们作为PL/SQL包的一部分执行时,它们会花费更长的时间.

我们的DBA已经通过PLSQL观看这些查询需要10分钟,通过SQL*Plus观看10秒钟.

有没有人有关于在何处寻找错误配置的指示?

客户端 - Windows 2000 Server - Linux(Oracle Enterprise)

谢谢

-

解析度:

我希望我能接受每个人的答案.其中一些非常有帮助.

  • 该查询正在转换数据类型.
  • 执行计划不匹配.(提示修正了.)
  • DBA正在查看光标打开的时间而不是查询时间.

Ton*_*ews 9

使用SQL跟踪查看每种情况下的执行计划.一种可能的想法(来自经验):是否将错误类型的值绑定到查询?可能是在SQL Plus中你正在运行:

select * from mytable where id = '1234';
Run Code Online (Sandbox Code Playgroud)

但是在PL/SQL中你正在运行:

select * from mytable where id = p_id;
Run Code Online (Sandbox Code Playgroud)

将p_id定义为数字.这将强制ID列上的TO_NUMBER并阻止Oracle使用索引.