[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. SSRSのデータセットにクエリが貼り付けられない場合 (さらに…)…
  2. 開始日と終了日にブランクを設定した場合の記述にも対応 (さらに…)…
  3. 画面のパラメータにより異なる検索条件や、異なるテーブルのデータを取得する際。 「UNION ALL…
  4. C#でSQL Serverから値を取得するには、System.Data.SqlClientクラスを使…
  5. Oracle 12cではCDBとPDBの概念があるため、それより前のバージョンの様にログインすると、…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る