-1

我在 Visual Studio 2008 中使用 C#。我有一个绑定列表视图的 aspx 页面。从 8 个表访问数据。

我应该更喜欢哪一个以获得最大性能,存储过程或后面代码中的 linq?

哪一个的网络流量最小?

4

2 回答 2

2

存储过程几乎总是更快,并且允许对查询执行进行更多控制,但是在流量较低的项目或开发计划非常短的项目上,构建它们的开发时间可能不合理。

于 2012-04-28T10:04:09.047 回答
2

在大多数情况下,它是情境化的,并且还取决于数据的大小。
同样首先,始终检查您的团队当前的编码标准和模式是什么。如果贵公司的标准说始终使用 SPROCS,那么请遵守这些标准。

大量记录 (SPROC)
如果表中的预期数据可能是每个表中的几十万条记录,那么对于 8 个表返回总共有一百万条记录以使用 LINQ 检索一小部分数据可能是完全开销。

LINQ 会将其当前迭代的记录保留在内存中,直到构建预期的结果集。这很可能会以内存中的所有百万条记录+内存中结果集的记录而告终。

另请注意,Visual Studio 的内存限制为 2GB 内存(无论您有多少 RAM),而不是它的表面(在 32 位系统的调试模式下,不确定 64 位)。过去我在使用 LINQ 查询大型数据集时遇到过问题,因此我遇到了内存不足的异常。

在这种情况下,SPROC 可能更快更安全。

很少的记录 (LINQ)
另一方面,如果 8 个表中的每一个中的数据在未来都将始终很小,并且不会发生太大变化,那么使用 LINQ 几乎没有什么区别。但是,请测试多个表连接在 LINQ 中是否可能比在 SPROC 中慢。

编辑(比较/分析执行计划)
另请注意,在大多数情况下,使用 LINQ 为连接生成的 SQL 在大多数情况下在 .NET 4.0 中非常有效,不确定 .NET 3/3.5 但使用 SQL 探查器可以看到生成的 SQL 并运行它在 SQL 中将其与 SPROC 执行计划进行比较。

于 2012-04-28T10:23:30.773 回答