为什么sp_executesql参数这么慢?

时间:2015-05-01 12:40:31

标签: sql-server

我们使用sp_executesql从C#层对SQL Server 2012执行了一个SQL查询。以下是运行时的样子的简化示例。

exec sp_executesql N'
select * from MyTable where MyColumn = @MyParameter
'
,N'@MyParameter int'
,@MyParameter=1

由于未完全理解的原因,此查询需要4分钟才能运行。我们通过将所有输入参数复制到局部变量,然后仅使用查询中的变量来更改查询,并且执行时间下降到0秒。

exec sp_executesql N'
declare @MyVariable int = @MyParameter
select * from MyTable where MyColumn = @MyVariable
'
,N'@MyParameter int'
,@MyParameter=1

有谁知道为什么会这样?更重要的是,无需更改我的代码,可以做些什么呢?当然,这表明SQL Server安装有问题,可以通过修改某些数据库设置来更改。到目前为止,这只是一个环境中的问题,有很多,有一个特定的查询,但我担心会出现更多,因为我们有很多查询以这种方式使用参数。

0 个答案:

没有答案