0

一部のデータを挿入または更新するための SQL Server ストアド プロシージャがあります (ロジックを実行します)。多くの行を挿入/更新するために、.netアプリケーションから複数回呼び出したいです。

ストアド プロシージャが既にコンパイルされており、パラメーターだけを期待している場合、ストアド プロシージャを準備済みステートメントとして呼び出すことは理にかなっていますか?

4

1 に答える 1

2

パラメーター化されたクエリなどのストアド プロシージャも、 SQL Server によって実行される前に一度解析する必要があります。

その解析中に実行プランが決定され、SQL Server のプラン キャッシュに格納されます。その後、そのストアド プロシージャ (またはパラメーター化されたクエリ) を呼び出すと、そのキャッシュされた実行プランが再利用されます。キャッシュされた実行プランは、SQL Server が再起動するまで、またはメモリ不足のためにキャッシュをクリアする必要があるまで、メモリに残ります。

したがって、基本的には、(実行計画を決定するために) ストアド プロシージャ (またはパラメーター化されたクエリ) を1 回解析する必要があるという事実を回避する方法はありません。一度解析すると、実行計画はメモリ内にあり、再利用できます。これはまた、ストアド プロシージャへの最初の呼び出し (前回の SQL Server の再起動以降) は常に少し遅くなるということも意味します。

于 2013-03-29T11:30:37.700 に答える