对于Microsoft.NET应用程序,Oracle存储过程是否比内嵌SQL更快?

对于Microsoft.NET应用程序,Oracle存储过程是否比内嵌SQL更快?,sql,oracle,stored-procedures,odp.net,Sql,Oracle,Stored Procedures,Odp.net,我们正在开发一个以Oracle 9i为后端的Visual Studio.NET 2008应用程序。存储过程的使用会比内联SQL更快吗?这是一场与我的合作程序员的辩论 我们使用的是Oracle的ODP.NET(Oracle Data Provider for.NET) 谢谢。如果以这样的方式构建存储过程(PL/SQL包),那么在数据库和客户机之间传输的数据会更少,速度会更快 如果以这样的方式构建存储过程(PL/SQL包),那么在数据库和客户机之间传输的数据会更少,速度会更快 当我想回答“不”或“我

我们正在开发一个以Oracle 9i为后端的Visual Studio.NET 2008应用程序。存储过程的使用会比内联SQL更快吗?这是一场与我的合作程序员的辩论

我们使用的是Oracle的ODP.NET(Oracle Data Provider for.NET)


谢谢。

如果以这样的方式构建存储过程(PL/SQL包),那么在数据库和客户机之间传输的数据会更少,速度会更快

如果以这样的方式构建存储过程(PL/SQL包),那么在数据库和客户机之间传输的数据会更少,速度会更快

当我想回答“不”或“我不这么认为”时,知道这个问题答案的唯一真正方法是自己去测量它。使用像JetBrains dotTrace这样的探查器和蟾蜍自己的探查器来找出答案


所有其他答案都是推测性的。

虽然我很想回答“不”或“我不这么认为”,但知道这个问题答案的唯一真正方法是自己去测量它。使用像JetBrains dotTrace这样的探查器和蟾蜍自己的探查器来找出答案


所有其他答案都是推测性的。

应该是这样。当您向数据库发送内联SQL时,引擎必须解析并执行它。存储过程在创建时被解析(和编译)。因此,至少您正在获得解析时间。

应该是这样。当您向数据库发送内联SQL时,引擎必须解析并执行它。存储过程在创建时被解析(和编译)。因此,至少您正在获得解析时间。

我希望存储过程在几乎所有情况下都会更快。
但这主要取决于你的代码
例如,如果您从数据库中获取一个结果集,然后使用该数据执行其他查询,那么您将在网络流量中产生大量开销。如果您忘记对请求使用单个连接,则尤其如此

然后,使用一个存储过程返回已删除的数据(当然,如果可能的话)可能会更有效。

我希望存储过程在几乎所有情况下都会更快。
但这主要取决于你的代码
例如,如果您从数据库中获取一个结果集,然后使用该数据执行其他查询,那么您将在网络流量中产生大量开销。如果您忘记对请求使用单个连接,则尤其如此
然后,使用一个存储过程返回已删除的数据(当然,如果可能的话)可能会更有效。

说:“所有其他答案都是推测性的。”

这句话很有道理。有很多因素:数据库服务器是如何设置的?网络速度/可靠性如何?SQL怎么样?PL/SQL的性能如何?如果我愿意的话,我可以编写非常慢的SQL和/或PL/SQL(而且无意中,在过去的项目上)。所以如果可以的话,两种方法都试一下。

说:“所有其他答案都是推测性的。”


这句话很有道理。有很多因素:数据库服务器是如何设置的?网络速度/可靠性如何?SQL怎么样?PL/SQL的性能如何?如果我愿意的话,我可以编写非常慢的SQL和/或PL/SQL(而且无意中,在过去的项目上)。所以,如果可以的话,可以同时尝试这两种方法。

希望从应用程序提交的SQL将使用绑定变量,因此重复执行不会很难解析。可以适当地说,在PL/SQL中提升绑定变量,因为这比不绑定它们容易得多,因此提升了更好的实践。希望从应用程序提交的SQL将使用绑定变量,因此重复执行不会很难解析。可以适当地说,在PL/SQL中提升绑定变量,因为这比不绑定它们容易得多,因此提升了更好的实践。