1

私は現在、ストアドプロシージャの1つに対して不正なクエリプランが非確定的にキャッシュされるという問題を解決しようとしています。多くのリソースは、この種の問題がパラメータスニッフィングによって引き起こされる可能性があることを示していますが、私の場合が当てはまるかどうかはわかりません。

具体的には、XML型の単一のパラメーターがあり、sprocで最初に行うことは、それを一時テーブルにロードすることです。これは、パラメータスニッフィングの影響を受ける可能性がありますか?

(複製には時間がかかり、私が言ったように、非決定論的であるため、まだチェックしていません)

4

2 に答える 2

0

plan is non-determinstically cached実行計画がキャッシュされるか、キャッシュされない可能性があるという意味がわかりません。パラメーターのスニフリングは、サーバーがパラメーター値に基づいて最も効率的な実行プランを特定するために使用されます。これは、ある条件で使用されます。大まかに言えば、パラメーターのスニッフィングにより、sql-server は何らかのインデックスを使用することが効率的かどうかを判断します。詳細については、このブログなどで読むことができます。

したがって、質問に答えると、ある条件でxmlパラメーターを使用せず、一時テーブルにロードするだけなので、パラメーターのスニッフィングによって実行プランが影響を受けることはありません。

ただし、一時テーブルを使用している限り、ほとんどの場合、実行プランはキャッシュされず、実行のたびに再コンパイルされます。プランをキャッシュする場合は、代わりにテーブル変数の使用を検討してください。

お役に立てれば。

于 2012-08-04T03:36:02.130 に答える