sql >> データベース >  >> RDS >> Sqlserver

WHERE-CASE 句 サブクエリのパフォーマンス

    ソリューションは理論的にはパフォーマンスの向上に役立つと思いますが、スカラー関数が実際に何をするかにも依存します。この場合 (私の推測では、日付を四半期の最終日にフォーマットしています) は、実際には無視できると思います。

    推奨される回避策を含むこのページを読むことをお勧めします:

    http://connect.microsoft.com/SQLServer/feedback/details/273443/the-scalar-expression-function-would-speed-performance-while-keeping-the-benefits-of-関数#

    また、回避策には、

    というコメントがあります。

    はい、これによりパフォーマンスが向上する可能性があります。

    あなたの解決策は正しいですが、代わりに ELSE を使用するように SQL を改善することを検討することをお勧めします。私にはきれいに見えます:

    AND ReportTypeID = CASE WHEN (@X = 1) THEN  1 
                        ELSE 4
                        END;
    


    1. パスワードハッシュとソルティング-これは良い方法ですか?

    2. MySQLでタスクマネージャのデータベースを設計するためのガイド

    3. JqgridPaginationのデータをフェッチするためのストアドプロシージャの記述の難しさ

    4. MySQLに有効な自動インクリメント値として0を取得させる方法