我对使用c#编程语言环境操纵数据有两点看法。
select * from where ...
)使用sql查询并获取数据。select * from
)获取所有数据并在对象列表上使用Linq查询。对于大尺寸或平均尺寸数据,这些意见的性能差异是什么?我可以同时使用它们吗?
答案 0 :(得分:5)
性能的一般答案是问题是对您的数据进行尝试,看看哪个更好。
但是,在您的情况下,有一个正确的答案:在数据库中完成工作。
过滤数据库中的数据(使用where
)有两个好处。首先,它减少了从数据库发送到应用程序的数据量。这几乎总是一场胜利(除非几乎所有行都被退回)。
其次,它允许数据库优化查询,使用(例如)可用索引来加速查询。
答案 1 :(得分:1)
个人 - 如果您可以减少从数据库中吸入内存的数据量,那么就这样做。为什么下载10M记录,当你需要100k时...然后使用linq进行更多改进以简化可能使用当地条件等。对于小数据你可以尝试两种 - 虽然取决于你的linq连接到对象的方式,你仍然可以执行sql无论如何,所以......
答案 2 :(得分:-2)
我假设您在这里谈论 LinqToSql ,结果查询是等效的。如果是这种情况,性能方面的唯一区别是 LinqToSql 将c#表达式树转换为SQL查询的开销。并且它非常严重,因为该过程涉及使用反射和转换树的复杂逻辑的数据库提供程序。