C# Sql查询和Linq数据查询的性能比较

C# Sql查询和Linq数据查询的性能比较,c#,sql,sql-server,linq,C#,Sql,Sql Server,Linq,关于使用c编程语言环境处理数据,我有两种看法 从以下位置选择*。。。使用sql查询并获取数据。 从“获取所有数据”中选择*并在对象列表上使用Linq查询。 对于大数据或小数据,这些观点的性能差异是什么。我可以同时使用这两种方法吗?性能问题的一般答案是在您的数据上试用,看看哪种方法效果更好 不过,在您的情况下,有一个正确的答案:在数据库中完成工作 使用where过滤数据库中的数据有两个优点。首先,它减少了从数据库发送到应用程序的数据量。除非几乎所有行都返回,否则这几乎总是一场胜利 其次,它允许数据

关于使用c编程语言环境处理数据,我有两种看法

从以下位置选择*。。。使用sql查询并获取数据。 从“获取所有数据”中选择*并在对象列表上使用Linq查询。
对于大数据或小数据,这些观点的性能差异是什么。我可以同时使用这两种方法吗?

性能问题的一般答案是在您的数据上试用,看看哪种方法效果更好

不过,在您的情况下,有一个正确的答案:在数据库中完成工作

使用where过滤数据库中的数据有两个优点。首先,它减少了从数据库发送到应用程序的数据量。除非几乎所有行都返回,否则这几乎总是一场胜利


其次,它允许数据库优化查询,例如使用可用的索引来加速查询。

就个人而言,如果您可以减少从数据库吸入内存的数据量,那么就这样做。当你需要10万条记录时,为什么要下载10万条记录。。然后,为了简单起见,可以使用linq对其进行进一步细化,例如使用局部条件等。对于小数据,您可能可以同时尝试这两种方法-尽管取决于linq与对象的连接方式,您仍然可以执行sql,所以…

我假设您在这里讨论的是LinqToSql,并且生成的查询是等效的。如果是这种情况,那么性能上的唯一区别就是将c表达式树转换为SQL查询的LinqToSql开销。这是相当严重的,因为这个过程涉及到DB provider,它使用反射和转换树的复杂逻辑。

在处理大数据时,加载过滤数据当然更好。但是,如果您只有几行,并且经常更改where clouse,那么一次加载所有行可能更合理您考虑过测量它吗?第一行在99%的时间内都很快。但它很容易测试,所以测试它?SQL用于高效地过滤大型数据集。SQL不是过程性的。它适用于场景。集合过滤大型数据集的速度几乎总是比过程语言快。LINQ not LINQ to SQL将迭代数据集。所以它基本上是foreach循环的包装器。他说获取所有数据并使用Linq查询,所以我要说它不是LINQTOSQLK。你能使用Linq从普通ADO.NET查询中获取数据吗?是的。您可以在任何数据集上使用linq,因此开销位假定他使用的是另一种方法加载数据,而这在问题中并不明确。这就是为什么我对我的答案做了一些假设。