パラメータ化されたクエリがいくつかありますが、それらはまだ毎回新しい実行プランを作成しています。 SQL Server 2016を使用しています。
クエリは次のようなものです。
(@P1 varchar(1043),@P2 varchar(6))
UPDATE table
SET FILEDATA=@P1
WHERE FILEID=@P2
このクエリは、キャッシュから既に生成された実行プランを使用せず、毎回新しいプランを作成します。
@P1
の長さは、これらすべてで異なります。
コードでパラメーターの長さを明示的に設定していないため、さまざまな計画が発生しています。
文字列の違いは、どんなにマイナーであっても、新しいプランを生成します。データ型のサイズ、スペース、コメント、それらすべてがプランキャッシュに新しいエントリを引き起こします。 これは問題を説明するデモビデオです。