21

与使用大多数低级 C 加载的自定义优化查询相比,使用 C# 和 LINQ 涉及多少数据库性能开销,两者都具有 SQL Server 2008 后端?

我在这里特别考虑了这样一种情况,即您有一个相当数据密集型程序,并且每个屏幕将至少进行一次数据刷新或更新,并且将同时拥有 50-100 个用户。

4

2 回答 2

2

谢谢斯图。底线似乎是,如果您能够使用已编译的选择,则 LINQ to SQL 可能不会对较新版本的数据库性能开销产生重大影响,并且较慢的更新功能可能会更快,除非您有一个非常敏锐的做大部分编码的专家。

于 2008-08-07T15:02:49.707 回答
2

以我的经验,只要编写查询的人知道他/她在做什么,并采取通常的预防措施以确保生成的查询是最佳的,必要的索引就位等,开销是最小的。换句话说,数据库影响应该是相同的;应用程序端的开销很小但通常可以忽略不计。

也就是说……有一个例外;如果单个查询生成多个聚合,L2S 提供程序会将其转换为一个大型查询,每个聚合有一个子查询。对于大型表,这可能会产生显着的 I/O 影响,因为查询的 db I/O 成本会随着查询中每个新聚合的数量级增长。

解决方法当然是将聚合移动到存储过程或视图。Matt Warren 为替代查询提供程序提供了一些示例代码,以更有效的方式翻译这种查询。

资源:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211

http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx

于 2008-09-16T07:14:18.153 回答