与大多数使用低级C语言加载的自定义优化查询相比,使用C#和LINQ涉及多少数据库性能开销?
我在这里特别考虑这样一种情况:您有一个相当数据密集型的程序,并且将在每个屏幕上至少执行一次数据刷新或更新,并且将有50-100个并发用户。
发布于 2008-09-16 07:14:18
在我的经验中,如果编写查询的人知道他/她在做什么,并且采取通常的预防措施来确保生成的查询是最佳的,必要的索引到位等等,那么开销应该是最小的。换句话说,对数据库的影响应该是相同的;应用程序端的开销最小,但通常可以忽略不计。
也就是说..。但有一个例外;如果一个查询生成多个聚合,则L2S提供程序会将其转换为一个大型查询,每个聚合包含一个子查询。对于大型表,这可能会产生显着的I/O影响,因为对于查询中的每个新聚合,查询的db I/O成本会增加几个数量级。
解决方法当然是将聚合移动到存储的proc或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
发布于 2008-08-07 15:02:50
谢谢斯图。底线似乎是,如果您能够使用编译的select,LINQ to SQL在较新版本中可能不会有显著的数据库性能开销,而且更新的较慢功能可能会更快,除非您有一位非常敏锐的专家来执行大部分编码。
https://stackoverflow.com/questions/4782
复制相似问题