私は2つの方法で書かれたクエリを持っています。このようにしたら:
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 分、2 番目の方法は約 20 秒かかります。何が起こっている!?私は同様の問題を調査しようとしてきましたが、クエリのキャッシュに関することを見続けていますが、通常は、人々が最初の方法ではなく、nvarchar で exec を実行しているためです。
私はSQLにかなり慣れておらず、完全に迷っています。どんな助けでも素晴らしいでしょう。
最初の方法で行っている理由は、C# からストアド プロシージャを呼び出し、それをパラメーターで渡しているからです。