我正在检查一些ORM和Micro-ORM的行为,并检查它们如何生成发送到数据库(SQL Server)的查询。
我注意到有两种主要的执行方法:
直接执行查询:
select * from mytable
insert into mytable(val1, val2) values (@val1, @val2)
或者用户使用类似于sp_executesql的东西:
exec sp_executesql N'INSERT INTO mytable(val1, val2) VALUES (@p0, @p1)',N'@p0 int,@p1 nvarchar(4000),@p0=1,@p1=NULL
这两种方法有什么区别?哪一种更快?它会影响执行计划吗?