我们正在开发一个使用Oracle 9i作为后端的Visual Studio.NET 2008应用程序。存储过程的使用是否比Inline SQL更快?这是与我的共同程序员的辩论。
我们正在使用Oracle的ODP.NET(Oracle Data Provider for .NET)。
感谢。
答案 0 :(得分:7)
虽然我很想回答“不”或“我不这么认为”,但了解这个问题答案的唯一真正方法是自己去衡量。使用像JetBrains dotTrace和TOAD自己的探查器这样的探查器来查找。
所有其他答案都是推测性的。
答案 1 :(得分:4)
应该是。将内联SQL发送到数据库时,引擎必须解析并执行。存储过程在创建时被解析(和编译)。所以至少你正在获得解析时间。
答案 2 :(得分:3)
我希望几乎在所有情况下存储过程都会更快
但它主要取决于你的代码。
例如,如果从数据库中获取结果集,然后使用此数据执行其他查询,则最终会在网络流量中产生大量开销。如果您忘记为请求使用单个连接,则尤其如此。
然后,使用单个存储过程返回聚合数据可能会更有效(如果可能的话)。
答案 3 :(得分:2)
如果以这样的方式构建存储过程(PL / SQL包),在数据库和客户端之间传输的数据更少,那么速度会更快。
答案 4 :(得分:0)
Jon Limjap说:“所有其他答案都是推测性的。”
这句话有很多道理。有很多因素:数据库服务器是如何设置的?网络速度/可靠性如何?怎么是SQL?怎么是PL / SQL?如果我愿意,我可以编写非常慢的SQL和/或PL / SQL(并且无意中,有过去的项目!)。所以,如果可以,请尝试两种方式。