我们知道linq是建立在ado.net堆栈之上的一层。这是一个非常好的特性,使数据库查询变得更好,但linq是一个附加层,因此它增加了一些开销,将linq查询转换为sql查询并映射回结果,而在ado.net中,我们直接编写sql查询。
我的问题是,linq在什么时候比使用普通的ado.net方法执行得更快。
发布于 2010-11-27 05:36:26
您总是能够通过从ADO访问的存储过程将LINQ返回到数据库,然后直接操作,或者(如果您必须处理对象)使用当前任务所需的数据量来构造对象。
但是,LINQ允许我们非常快速地创建一个查询,该查询通过返回匿名对象来返回该任务所需信息。
要对每个查询的自定义代码执行相同的操作,需要不停止在其他层处理ADO (在几个方面都很麻烦)和/或创建大量复制其大部分功能但不共享代码的对象。
因此,虽然它可以在性能上被击败,但在这种情况下,如果没有相当重复的代码的lot,它就不能被击败。而且它在性能上比更自然的方法(返回entity对象,我们不会使用)更好。
最后,即使在它没有获胜的情况下,它仍然可以更快地编写,并且操作与实体定义的方式有关(这是我非常喜欢它的主要原因)。
发布于 2010-11-27 05:29:22
当在原始SQL中编写所有这些查询和管理所有其他转换等节省的时间允许您将更多时间花在查找性能瓶颈上时。
LINQ并不是要超越SQL。这是为了让代码更简单、更清晰,这样你就可以专注于更重要的方面。有时,查询的自然LINQ表达式可能会以比您自己想出的更快的SQL结束-尽管有很多时候也会发生相反的情况。您仍然应该查看正在生成的SQL,并相应地对其进行分析。
https://stackoverflow.com/questions/4288631
复制相似问题