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 リトライ1.1 デメリット1.2 対策2 バッチ分割2.1 デメリット2.2 対策3 バッチ再利用不可3.1 デメリット3.2 対策 リトライ ※OLTP=オンライントランザクショ …

no image

MySQLのLIMIT,OFFSETに関して&explainの見方など

自作のWEBアプリを作っていたところSELECT句が異常に遅いケースがありました。 発見までにかなり時間がかかったんですが、不可思議な現象としてはOFFSETが小さいときと大きいときで検索スピードが全 …

no image

JPAを使用する  JavaSE編

現在の開発ではデータベースへの接続ではJPAを使っています。このJPAがなかなか曲者でいろいろと詰まることがありましたので解説させていただきます。 Contents1 JPAとは?1.1 メリット1. …

no image

データ構造の基礎知識 後編 木構造

データベースの学習をしていたときの復習です。 データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト データ構造の基礎知識 中編 ハッシュ 今回はもう少し複雑な「木構造」について考えてみます。 …

no image

MySQL小ネタ テーブル単位のリストア・SQLの小ネタ(バックスラッシュの検索)

MySQLのちょい小ネタ。 Contents1 テーブル単位でバックアップ&リストア2 バックスラッシュの入ったSQLについて テーブル単位でバックアップ&リストア 1 通常のdump(データベース単 …