質問

多くの変数が割り当てられたストアドプロシージャの上部に初期化コードのチャンクがあると想像してください。

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())
...

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

役に立ちましたか?

解決

この場合、複数の割り当てを実行すると、パフォーマンス面でSELECTが優先されます。

これについての詳細は次のとおりです。

SELECTとSET:ループの最適化

他のヒント

考えたことはありますが、テストしたことはありません。

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

複数の割り当てを行うことは、常に一緒に行うべきことをカットアンドペーストまたはリファクタリングで分割しないようにする場合に、メンテナンスの観点から役立つと思います。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top