首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server -执行直接查询与使用sp_executesql执行

SQL Server -执行直接查询与使用sp_executesql执行
EN

Stack Overflow用户
提问于 2015-02-26 15:36:04
回答 1查看 486关注 0票数 4

我正在检查一些ORM和Micro-ORM的行为,并检查它们如何生成发送到数据库(SQL Server)的查询。

我注意到有两种主要的执行方法:

直接执行查询:

代码语言:javascript
复制
select * from mytable
insert into mytable(val1, val2) values (@val1, @val2)

或者是用户sp_executesql这样的东西:

代码语言:javascript
复制
  exec sp_executesql N'INSERT INTO mytable(val1, val2) VALUES (@p0, @p1)',N'@p0 int,@p1 nvarchar(4000),@p0=1,@p1=NULL

这两种方法有什么不同?哪一个更快?它会影响执行计划吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-02 17:27:45

如果您使用sp_executesql的参数(如上面的示例所示),并且语句的文本在两次执行之间没有变化,那么为第一次执行生成的执行计划可能会用于后续执行。因此,它的性能可能与多次执行标准语句一样好(就像在第一个代码示例中一样)。

但是,sp_executesql语句的内容是作为独立于调用sp_executesql的批处理的执行计划编译和执行的,因此在这种情况下,它确实会对执行计划产生影响。

sp_executesql存储过程与标准直接语句之间的主要区别在于,前者可用于执行动态创建的语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28736805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档