1

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

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

谢谢。

4

5 回答 5

7

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

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

于 2009-05-06T07:25:19.267 回答
4

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

于 2009-05-06T07:38:15.587 回答
3

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

于 2009-05-06T08:34:06.480 回答
2

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

于 2009-05-06T07:24:35.837 回答
0

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

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

于 2009-05-06T13:23:37.347 回答