【SQLServer】アドホッククエリとパラメータ化クエリ

SQLServer Profilerでクエリを眺めていたら、
単純なクエリとパラメータを利用したクエリとで
実行結果に違いがあったので気になって色々と調べてみました。

アドホッククエリとパラメータ化クエリ

簡単にしか調べていないので間違えているかもしれないのですが、
アドホッククエリとパラメータ化クエリってのがあるらしいです…( ˘ω˘)


アドホッククエリ

使い捨てのクエリ。
でもSQLServerはアドホッククエリのコンパイル結果を
プロシージャキャッシュに蓄積する。
ガベージコレクションによってキャッシュデータを削除はするが、
一定量貯まったタイミングで動作するので処理の影響が気になる。

SQLServer Profilerでの表示

アドホッククエリ


パラメータ化クエリ

コンパイルは一度だけ行えば良く、
コンパイル済みのクエリにパラメータを与えるだけで
実行可能なクエリ。
上手く使うことでプロシージャキャッシュを有効活用できる。
※クエリの書き方が統一されていないと、異なっているクエリの数だけコンパイルされてしまう。

SQLServer Profilerでの表示

パラメータ化クエリ(初回)

パラメータ化クエリ(2回目以降)

確かに2回目以降はコンパイル済みのクエリを実行しているようです。


おまけ

コンパイル済みのクエリを取得してみた。

調べてみないとよくわからん…!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください