LINQ和存储过程之间的性能差异

Al *_*azi 14 linq sql-server stored-procedures

有关

LINQ-to-SQL vs存储过程?

我已经听过很多关于预编译存储过程的优点的讨论.但是LINQ和选择,插入,更新,删除的存储过程之间的实际性能差异是什么?有没有人进行任何测试,看看是否有任何重大差异.如果更多的交易有所作为,我也很好奇.

我的猜测是LINQ语句在第一个事务之后被缓存,并且性能可能几乎相同.思考?

E.J*_*nan 19

LINQ应该在性能上接近但我不同意上面的声明,即LINQ更快,它不能更快​​,它可能同样快,但所有其他条件相同.

我认为不同之处在于,一个知道如何优化和使用存储过程的优秀SQL开发人员总是会在性能方面略有优势.如果你对SQL不够强,那么让Linq为你解决这个问题,你的表现很可能是可以接受的.如果您是一名强大的SQL开发人员,请使用存储过程在应用程序需要时挤出一些额外的性能.

如果你编写一个可怕的SQL来编写一些执行速度比Linq慢的存储过程,那肯定是可能的,但是如果你知道你在做什么,那么存储过程和一个Datareader是无法击败的.

  • 不要过早优化:优化正确的代码比纠正优化的代码更容易. (5认同)
  • 我见过的所有"自动魔法"sql工具都会生成可行的查询,这些查询比最糟糕的人工书面查询更好,但比最好的书面查询更糟糕. (2认同)
  • 你在比较linq查询与Linq执行的SP吗?可能不同,但由datareader执行的SP应该比linq查询或linq执行SP更快.它可能无法检测得更快,但我无法理解它可能会变慢. (2认同)

小智 6

与 LINQ 查询相比,存储过程更快,它们可以充分利用 SQL 功能。当下次执行存储过程时,数据库使用缓存的执行计划来执行该存储过程。而 LINQ 查询每次都会被编译。因此,与存储过程相比,LINQ 查询的执行时间更长。

与 LINQ 相比,存储过程是编写复杂查询的最佳方式。