0

いくつかの変数割り当てを持つストアド プロシージャの先頭に、初期化コードのチャンクがあるとします。

SET @proc = 'sp_madeupname'
SET @magic_number = 42
SET @tomorrows_date = DATEADD(dd, 1, GETDATE())
...

上記のすべてを 1 つの SELECT として実行する方が明らかに高速です。

SELECT
     @proc = 'sp_madeupname'
    ,@magic_number = 42
    ,@tomorrows_date = DATEADD(dd, 1, GETDATE())
...

しかし、どのくらい速いですか?このストアド プロシージャがループの一部として数千回実行された場合、パフォーマンスに大きな違いが生じるでしょうか?

4

2 に答える 2

3

この場合、複数の代入を実行すると、パフォーマンスの点で SELECT が優先されます。

これに関する詳細情報は次のとおりです。

SELECT と SET: ループの最適化

于 2008-10-10T05:15:21.743 に答える
0

私はそれについて考えましたが、それをテストしたことはありません。

私の経験では、オプティマイザーはかなり良いので、違いはないと思いますが、本当に便利だと思ったら、いくつかのテストを実行します。

複数の割り当てを行うことは、カットアンドペーストやリファクタリングで分割されないように常に一緒に行う必要があるいくつかのことを望む場合、メンテナンスの観点から役立つと思います。

同じ理由で、比較的モジュール化されたコードは、メンテナンス中にリファクタリングするために簡単にカットアンドペーストできるため、個別の初期化の恩恵を受けることができます。

于 2008-10-09T23:51:17.903 に答える