[SQL Server]パラメーターにより実行するクエリを変更する(IF文)

[スポンサードリンク]

画面のパラメータにより異なる検索条件や、異なるテーブルのデータを取得する際。
「UNION ALL」か「IF」で、取得するデータを切り替える方法がある。

「UNION ALL」と「IF」のどちらを使うか

「UNION ALL」の問題点

下記クエリのようにUNION ALLで検索条件の異なるクエリを繋げて、パラメーターで抽出するデータを選択する方法もあるが、上のSQLと下のSQLのデータを外部結合などで両方活用する場合。
例えば上のSQLが上期の売上データで、下のSQLが下期の売上データで、両方とも画面に表示する場合は、「UNION ALL」を使用してかまわない。

しかし、上のSQLのデータと、下のSQLのデータのどちらか一方しか使わないという、下記のSQL例だと、パフォーマンス的に難がある。

例えば、上のSQLで5万件、下のSQLで10万件のデータが取得されるとすると、パラメータにより5万件のデータを取得したいが、上下15万件のデータを取得した後に、5万件を抽出することになる。
10万件の不要なデータを取得する処理時間がもったいないのである。

どちらか一方のデータを使うのならIF文で分岐する

どちらか一方のデータを使うのならIF文で分岐すれば、不要な行を取得することなく、パフォーマンスも上がる。

[スポンサードリンク]

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


ピックアップ記事

  1. Oracle 12cではCDBとPDBの概念があるため、それより前のバージョンの様にログインすると、…
  2. 例えば、商品の色が登録されているもの、登録されていないものなどを取得する場合 (さらに&hell…
  3. ビューの作り方、ANSI_NULLS、QUOTED_IDENTIFIER、WITH(NOLOCK) …
  4. 割り算に必須な0除算回避 (さらに…)…
  5. リモートデスクトップ接続のサーバーで、スタートメニューが反応しなくなった場合 (さらに&hell…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る