[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. ビューの定義を検索して、ビューで参照しているテーブルまたはビューを探す (さらに……
  2. SSRSのパラメータ入力エリアが、英語表記になった場合の対策。 (さらに…)…
  3. Oracle 12cではCDBとPDBの概念があるため、それより前のバージョンの様にログインすると、…
  4. SQLServer SELECT文で連番を振る(項目ごとの連番・通し連番) (さらに&helli…
  5. IDとパスワードでSQL Serverでログインするユーザーを作成する。 (さらに&hellip…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る