我有一个以两种方式编写的查询。一旦像这样:
declare @var1 int
declare @var2 int
set @var1 = 1
set @var2 = 50
declare @myQuery = nvarchar(max)
set @myQuery = 'INSERT INTO someTable
@var1
WHERE something = @var2'
EXEC sp_executesql @myQuery,
N'@var1 int,
@var2 int',
我也有查询:
declare @var1 int
declare @var2 int
set @var1 = 1
set @var2 = 50
INSERT INTO someTable
@var1
WHERE something = @var2
我真正的查询要长得多而且复杂得多。第一种方式大约需要 4 分钟,而第二种方式大约需要 20 秒。到底是怎么回事!?我一直在尝试研究类似的问题,并且不断看到有关查询缓存的事情,但通常是因为人们不是以第一种方式这样做,他们只是在 nvarchar 上执行 exec。
我对 SQL 非常缺乏经验,完全迷失了方向。任何帮助都会很棒。
我这样做的原因是我从 C# 调用存储过程并将其传递给参数。