Asp.net ORM vs参数化查询如果我唯一关心的是数据访问速度的话

Asp.net ORM vs参数化查询如果我唯一关心的是数据访问速度的话,asp.net,performance,data-access,Asp.net,Performance,Data Access,我在ASP.net/SQL Server开发环境中工作。如果我唯一关心的是速度,那么我应该使用参数化查询还是使用诸如nHibernate或LINQ之类的ORM?大多数ORM都支持参数化查询,所以在这方面没有区别。我会尽可能多地使用ORM实现,并且只在需要时通过手工制作SQL进行优化 了解ORM的工作原理有助于构建性能良好的代码。这样可以避免明显的陷阱,例如在循环中重复调用查询,例如通过外键查询另一个表。答案实际上是“视情况而定”,需要您在自己的环境中测试以确认,但总的来说,我想说的是,使用ORM

我在ASP.net/SQL Server开发环境中工作。如果我唯一关心的是速度,那么我应该使用参数化查询还是使用诸如nHibernate或LINQ之类的ORM?

大多数ORM都支持参数化查询,所以在这方面没有区别。我会尽可能多地使用ORM实现,并且只在需要时通过手工制作SQL进行优化


了解ORM的工作原理有助于构建性能良好的代码。这样可以避免明显的陷阱,例如在循环中重复调用查询,例如通过外键查询另一个表。

答案实际上是“视情况而定”,需要您在自己的环境中测试以确认,但总的来说,我想说的是,使用ORM工具会增加额外的抽象层,这可能会增加一些开销。我想,如果你真的不擅长编写SQL,那么ORM可能会更好,但在这种情况下,我只会努力提高你的SQL技能


编辑:我想补充一点,我通常不会根据性能来决定是否使用ORM。我会根据其他因素做出选择,并在这种情况下优化我的设计。

在所有条件相同的情况下,ORM会增加开销,因此它们一开始就处于劣势


另一方面,ORM可能会生成比您更高效的SQL,而且其中许多都带有内置的缓存功能,您不必自己编写(如果它们适合您的目的,那么您从缓存中获得的改进可能会比您因额外开销而损失的更大).

如果您唯一关心的是没有缓存使用的查询速度,那么您就不需要ORM,因为它的主要功能是通过删除执行本机查询的需要来简单地编码。但有时您需要将本地查询与ORM结合使用,以获得最佳速度,即使如此,抽象可能比手动使用参数化查询所需的时间稍长


但是,如果您的查询可能从缓存对象中受益,ORM可能会提高您的速度。

开销来自映射、跟踪更改等,而不是查询本身。映射速度非常快,但是如果您在一个操作中使用100000条记录,那么纯sql将获胜。但是,如果您在一个操作中处理100000条记录,则不应使用ORM。

您也可以编写自己的ORM,它可以让您以适合自己的方式平衡性能和方便性。开发速度还是查询速度?;)我知道使用PQ的开发速度会受到影响,但我关心的是dada访问,我想说这取决于ORM,例如,我使用的ORM经过高度优化,可以为不同版本的SQL Server以及其他一些数据库提供最有效的数据分页(包括查询的非分页行总数)。大多数开发人员都不具备这种详细的知识。