sql-server - 使用 LINQ 时数据库性能开销有多大?

标签 sql-server linq performance linq-to-sql

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

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

最佳答案

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

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

解决方法当然是将聚合移动到存储过程或 View 。 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

关于sql-server - 使用 LINQ 时数据库性能开销有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4782/

相关文章:

linq - 如何将 OR 运算符动态添加到 LINQ 中的 WHERE 子句

sql - 如何在 T-SQL 中使用 group by 和 union

sql - 在 SELECT 中选择行作为列

sql - text、ntext 和 image data > 类型不能进行比较或排序,除非使用 IS NULL 或 LIKE > 运算符

c# - 如何在 C# 中读取 XML 文件?

performance - Bluebird vs async.js 性能

c# - 对分数和带分数列表进行排序

c# - 无法将 LINQ Query var 转换为 DataTable

javascript - 为什么 asm.js 项目在 Chrome 中运行速度比 FireFox 快?

performance - 如何优化在 postgresql 中查询此数据?