我们知道linq是一个建立在ado.net堆栈顶部的层。它是一个非常好的功能,使数据库查询更好,但linq是一个额外的层,因此它增加了一些开销,将linq查询转换为sql查询并映射结果,而在ado.net我们直接编写sql查询。
我的问题是linq何时比使用普通的ado.net方法执行得更快。
答案 0 :(得分:7)
如果在原始SQL中编写所有这些查询并管理所有其他翻译等所节省的时间,您可以花更多的时间来发现性能瓶颈。
LINQ并不是表现优于SQL。这是为了使代码更简单,更清晰,因此您可以专注于更重要的方面。有时候,查询的自然LINQ表达式会以比你自己想出的更快的SQL结束 - 尽管有很多次相反的情况也会发生。您仍然应该查看正在生成的SQL,并相应地对其进行分析。
答案 1 :(得分:2)
您将始终能够使用从ADO访问的存储过程将LINQ支持到数据库,然后直接执行或者(如果必须处理对象)用于构建仅包含所需数据量的对象为了手头的任务。
但是,LINQ让我们可以非常快速地创建一个查询,通过返回匿名对象来返回该任务所需的信息。
对每个查询的自定义代码执行相同的操作要求不要停止在其他层处理ADO(以多种方式充实)和/或创建大量复制其大部分功能的对象,但需要共享没有代码。
因此,虽然它可以在性能上打败,但在没有很多相当重复的代码的情况下,它不能被打败。它可以在性能上击败更自然的方法(返回我们不会使用膨胀的实体对象)。
最后,即使在它没有获胜的情况下,它仍然可以更快地编写,并且更清晰的操作与实体的定义方式有关(后者是我非常喜欢它的主要原因) )。