Fre*_*red 21 linq sql-server performance linq-to-sql
与使用SQL Server 2008后端加载大多数低级别C的自定义优化查询相比,使用C#和LINQ需要多少数据库性能开销?
我特别想到的是一个案例,你有一个相当数据密集的程序,并且每个屏幕至少会进行一次数据刷新或更新,并且会同时拥有50-100个用户.
根据我的经验,只要编写查询的人知道他/她在做什么,并采取通常的预防措施以确保生成的查询是最佳的,必要的索引就位等,那么开销是最小的。换句话说,数据库影响应该是相同的;应用程序端的开销很小但通常可以忽略不计。
也就是说……有一个例外;如果单个查询生成多个聚合,L2S 提供程序会将其转换为一个大型查询,每个聚合有一个子查询。对于大型表,这可能会产生显着的 I/O 影响,因为查询的数据库 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