skillup

技術ブログ

Database

SQLクエリ比較

投稿日:

クエリの比較

SQLにおいては全く同じ結果を返すのであってもその検索結果が異なるということはよくあります。

例えば下記のようなテーブルがあった場合

co_cd | district
——-+———-
001 | A
002 | B
003 | C
004 | D

co_cd | shop_id | emp_nbr | main_flg
——-+———+———+———-
001 | 1 | 300 | Y
001 | 2 | 400 | N
001 | 3 | 250 | Y
002 | 1 | 100 | Y
002 | 2 | 20 | N
003 | 1 | 400 | Y
003 | 2 | 500 | Y
003 | 3 | 300 | N
003 | 4 | 200 | Y
004 | 1 | 999 | Y

各会社ごとにメインの事業所(main_flg=’Y’)の emp_nbrを出し合い場合、結合で出す場合とサブクエリでテーブル自体を作ってしまってそこから組み立てる2通りの方法があります。

この場合、後者のサブクエリのほうが対象となる絞り込みテーブルが少ないこともあり、高速です。

※詳しくは実行計画をみないとわかりません。

概してサブクエリのほうがスピードがあるようです。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

データベースアンチパターン・グレーパターンまとめ

本で勉強したものと自分で個人的に経験したことのまとめ Contents1 値渡しと参照渡しの混同2 型の制約が弱い3 変更していいデータ、していけないデータ4 参照系と履歴系のデータを区別する5 リレ …

no image

SQL基礎 case式について

case式に関して。 集約系の関数では複雑な処理を一気に行うことができる。 case式は1列のみ有効。複数の列に対して行うことはできない。 case ~ when ・・・thenではwhenが評価され …

no image

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …

no image

SQL基礎 条件式はunionよりもcaseで

複雑な条件式があったときにcase式を使うことでパフォーマンスを向上させることができます。 ※一般にunionを使うよりも高速なことが多い。 例1 ある条件により別の列を使いたいとき、 [crayon …

no image

SQL問題

今までやったSQL問題などのまとめ。定期的にやる予定です・・ 自分用なのでテーブルデータとかあったりなかったりいい加減です(汗) SQLドリル 問題1 nameとageで構成されたテーブルがあるとして …

アーカイブ