2014-04-07 73 views
2

我更熟悉SQL原始查询。大多数情况下,我使用存储过程来执行复杂的查询,插入,删除,更新和选择一条记录通过使用简单实体框架方法和Linq查询完成。什么是使用Linq和SQL Row查询的优点和缺点,以及最佳做法是什么。什么是最好的方式Sql原始查询或Linq

+0

http://stackoverflow.com/questions/494816/using-an-orm-or-plain-sql – Habib

+1

“原始”SQL很可能会更快(如果您擅长编写SQL语句),但Linq对程序员的生产效率更高效(你可以更迅速地完成任务,必须写出更少的无聊和容易出错的代码) –

回答

1

SQL将几乎总是(很多)更快,因为它对返回特定数据集进行高度优化。它使用复杂的索引来管理知道在哪里查找数据,以便能够执行此操作。但是,这通常也取决于您的数据库维护。例如,您可以通过向数据库添加索引来加快数据库搜索的速度,因此,如您所见,如果要优化性能,SQL需要比编写存储过程更多的工作。

另一方面,Linq实现起来要快很多,而SQL存储过程往往需要更长的时间才能编写,并且不需要您对数据执行维护。就我个人而言,我发现SQL很难阅读,而Linq和编程代码对我来说很自然。

因此我会说SQL更快更乏味,而编程方法更慢但更易于实现。

如果您正在研究一个小数据集,那么您可能会使用Linq,但是如果您使用大型数据库SQL几乎总是要走的路。

+1

也别忘了,并非所有事情都可以在LINQ中完成。我使用EF来完成80%的工作,但我经常使用存储过程来执行我在LINQ中无法做到的事情。像更新分区或SQL的复杂结构,只是没有LINQ表示。或者 - 可悲的是 - 暗示。即使锁提示不被EF支持......耻辱。 – TomTom

相关问题