在最近的一次采访中,采访者问道:
“您是否会编写一个简单的SQL查询或将该查询作为存储过程写入PL / SQL中。”
我的问题是,有什么不同,何时应该使用?
答案 0 :(得分:2)
SQL查询通常比PL / SQL查询更快,因为Oracle不必更改引擎来执行。
答案 1 :(得分:2)
要理解这一点,您需要了解上下文切换。编写简单的sql时,只播放Oracle SQL引擎。但是当您在PL / SQL中编写sql语句时,SQL引擎会将上下文切换到PL / SQL引擎,因此会执行该语句。上下文切换越多,性能越差。请查看以下链接,您可以更多地了解上下文切换。
http://www.oracle.com/technetwork/issue-archive/2015/15-jul/o45plsql-2543984.html
答案 2 :(得分:0)
基本上没有区别,因为SQL引擎无论主语言如何都执行查询 - 它可能是所有关心的COBOL。
额外组件略有开销(您调用该过程并执行SQL,而不是直接执行SQL),但该步骤通常可以以微秒为单位进行测量。 (一旦程序执行了多个操作 - 例如两个查询 - 那么优势就在于程序。)
存在权限影响,因为存储的权限存储PL / SQL在独立SQL时无法看到角色。