Database 与各种RDBMs中的嵌入式SQL相比,存储过程的性能如何?

Database 与各种RDBMs中的嵌入式SQL相比,存储过程的性能如何?,database,performance,stored-procedures,Database,Performance,Stored Procedures,根据我在Z/OS上使用DB2的经验,嵌入式SQL和存储过程之间没有区别,因为它们都被编译为本机代码。另一方面,我知道在Oracle中存在着巨大的差异——这是真的吗?在其他数据库中又是怎样的呢?请提供一些链接来支持您的声明。Oracle中的嵌入式SQL意味着您可以将SQL语句直接嵌入到C/C++代码中。有一个名为Pro*C的工具,可以解析这些语句并将它们包装到OCI调用中 这当然是一个客户端工具,我不认为它可以与服务器端存储过程相比较 如果“嵌入式SQL”指的是匿名块,那么当第一次调用块时,性能会

根据我在Z/OS上使用DB2的经验,嵌入式SQL和存储过程之间没有区别,因为它们都被编译为本机代码。另一方面,我知道在Oracle中存在着巨大的差异——这是真的吗?在其他数据库中又是怎样的呢?请提供一些链接来支持您的声明。

Oracle中的嵌入式SQL
意味着您可以将SQL语句直接嵌入到
C/C++
代码中。有一个名为
Pro*C
的工具,可以解析这些语句并将它们包装到
OCI
调用中

这当然是一个客户端工具,我不认为它可以与服务器端存储过程相比较

如果“嵌入式SQL”指的是
匿名块
,那么当第一次调用块时,性能会有所下降,因为需要编译is。存储过程在数据库中保持预编译状态

一旦第一次调用匿名块并将其保存在缓存中,就不会有性能差异

p.S.
PL/SQL
中有一种称为本机编译的东西,它允许编译过程并将它们存储在磁盘上的共享库中


这只能应用于存储过程,但它只适用于
CPU
密集型任务,而不适用于复杂的
SQL
查询。

“都编译为本机代码”:真的吗?我可以理解正在编译的查询计划,但对于本机代码,它们不是吗?至少“外部过程”是(当然也有“SQL过程”,但外部过程可以用任何语言编写,并作为常规本机代码编译和存储)。当然,我已经在大型机上用COBOL编写了存储过程,所以在其他地方可能会有点不同