私が維持しているストアド プロシージャを最適化しようとしていますが、以下のオプションのパフォーマンスの利点/ペナルティについて誰かが私に手がかりを与えることができるかどうか疑問に思っています。私のソリューションでは、基本的に、テーブルの IMAGE 列に格納された画像に対して変換プログラムを実行する必要があります。変換プロセスは、外部の .EXE ファイルにあります。ここに私のオプションがあります:
ターゲット テーブルの結果を一時テーブルにプルし、カーソルを使用してテーブルの各行に移動し、IMAGE 列に対してストアド プロシージャを実行します。ストアド プロシージャは、.EXE を呼び出します。
.EXE ファイルを呼び出す UDF を作成し、「select UDFNAME(Image_Col) from TargetTable」のような SQL クエリを実行します。
私が探しているのは、カーソルをセットとして作成するのではなく、カーソルの作成によってどれだけのオーバーヘッドが追加されるかという考えだと思いますか?
いくつかの追加情報:
- この場合のセットのサイズは最大です。1000
- 以下の回答にあるように、UDFとセットで行うと、外部プログラムを一気に1000回開くということでしょうか?または、そのための最適化が行われていますか? 明らかに、マルチプロセッサ システムでは、プロセスの複数のインスタンスを実行することは悪いことではありませんが、1000 は少し多いかもしれません。