動的な SQL があります。実行には約 4 分かかります。代わりに静的 SQL にすると、約 20 秒かかります。
ほとんどの場合、2 つのクエリは次のとおりです。
@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
...
このクエリを修正する他の方法がわかりません。修正がどうしても必要です。
編集いくつかの変更を加えました。動的なものも挿入ステートメントに含まれていることを忘れていました。起きてから投稿するとこうなります。