.net – 使用编译查询时,还需要存储过程吗?

在实体框架(或 linq-to-sql)中结合sql Server使用编译查询时,使用存储过程是否仍然具有任何性能优势?

编译查询将被缓存为参数化查询,因此性能应近似等于存储过程.有什么情况下存储过程会表现得更好吗?

– 编辑 –

回应Yakimych在下面的回答,我并不意味着编译查询与存储过程相同.如果您已经在应用程序方面进行了所有可能的优化(在这种情况下是已编译的查询),我正在尝试确定是否仍然需要sprocs.所以我想我正在寻找存储过程比应用程序侧优化和参数化查询的组合(这是编译查询是有效的)的原因.

我提出这个问题的原因之一是因为有很多人似乎认为由于不同的原因(即this post),存储的产品不再是必需的.

解决方法

“Is there any situation where stored procedures would perform significantly better?”

给定在EF或存储过程中生成的可比较的参数化sql,它们将执行相同的操作.

然而,DBA总是有机会根据DB架构及其使用模式的经验进一步优化查询.存储过程允许他们轻松地使用它来分离应用程序,而ORM则不使用它.

我们有一个非常复杂的sql Server数据库,它有许多外部系统通过触发器复制数据.使用EF的问题是,在使用任何ORM而不是DBA时,在数据库中触发的sql的责任将成为应用程序开发人员的责任.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...