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

时间:2009-05-06 07:16:38

标签: sql oracle stored-procedures odp.net

我们正在开发一个使用Oracle 9i作为后端的Visual Studio.NET 2008应用程序。存储过程的使用是否比Inline SQL更快?这是与我的共同程序员的辩论。

我们正在使用Oracle的ODP.NET(Oracle Data Provider for .NET)。

感谢。

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

应该是。将内联SQL发送到数据库时,引擎必须解析并执行。存储过程在创建时被解析(和编译)。所以至少你正在获得解析时间。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

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

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