[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. SQL Server認証ができるようにする設定方法 (さらに…)…
  2. SSRSのパラメータ入力エリアが、英語表記になった場合の対策。 (さらに…)…
  3. ビューの定義を検索して、ビューで参照しているテーブルまたはビューを探す (さらに……
  4. C言語のprintf関数でよく用いられるエスケープシーケンスを表すバックスラッシュ「\」の入力方法は…
  5. 無料動画セミナー・クラスメンバとインスタンスメンバ (さらに…)…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る