我有一段动态的 SQL。运行大约需要 4 分钟。如果我改为将其设为静态 SQL,则大约需要 20 秒。
几乎,这两个查询是:
@myVar = 1
SELECT *
FROM TABLE
WHERE someColumn = myVar
与:
@myQuery = '
SELECT *
FROM TABLE
WHERE someColumn = myVar'
EXEC sp_executesql @myQuery,
N'@myVar INT,
@myVar
我的真实查询要复杂得多。从统计数据来看,动态的比10x
读取次数多。我想让这个查询静态来解决这个问题。它是动态的全部原因是我的插入和选择是使用变量进行的。
我有类似的东西:
@someVar1 = "column1, column2, column3"
@someVar2 = "column4, column5, column6"
然后会有
@myQuery = 'INSERT INTO '+ @someVar1 +
'SELECT ' + @someVar2 + ' FROM ....'
等等
有什么办法我可以做类似的事情:
INSERT INTO @myVar1
SELECT @myVar2
FROM
...
我不知道如何修复这个查询,它迫切需要修复。
编辑我做了一些改变。我忘了提到动态的东西也在插入语句中。这就是我刚醒来后发帖时发生的情况。