使用LINQ时数据库性能开销多少?

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

我在这里特别想到一个案例,你有一个相当数据密集型的程序,并且将在每个屏幕上至少进行一次数据刷新或更新,并且同时拥有50-100个用户。

0

2 答案

感谢Stu。底线似乎是,如果您能够使用编译选择,那么LINQ to SQL可能不会对新版本造成显着的数据库性能开销,并且更新的较慢功能可能会更快,除非您有一个真正的尖锐专家在做大部分编码。

0
额外

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

这就是说...这有一个例外;如果单个查询生成多个聚合,则L2S提供商将其转换为一个大查询,每个聚合有一个子查询。对于大型表格,这可能会产生显着的I / O影响,因为对于查询中的每个新聚合,查询的数据库I / O成本随着幅度的增大而增大。

解决方法是将聚合移动到存储过程或视图。马特沃伦有一些替代查询提供程序的示例代码,可以更有效地翻译这类查询。

资源:

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

0
额外