夏椰の東屋

- お遊び記録 -

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  108  : 記事  1  : コメント  3898  : トラックバック  30

ニュース


落書きしてね♪

IAM
僕がとった写真です。
ご自由にお使いください。

フィードメーター - 夏椰の東屋 track feed
広告


記事カテゴリ

書庫

日記カテゴリ

Other Site From Kaya

今日はサブクエリとJOINで同じ結果が得られる場合

どっちがいいでしょう?!という話です。

 

まずは検証テーブルとデータを示します。

shopsテーブル
ID shopname delflag
1 A店舗 0
2 B店舗 0
3 C店舗 1
4 D店舗 0
dataテーブル
ID d val
1 2006/01/01 0:00:00 1000
1 2006/02/01 0:00:00 1200
1 2006/03/01 0:00:00 1300
1 2006/04/01 0:00:00 1400
2 2006/01/01 0:00:00 2000
2 2006/02/01 0:00:00 2200
2 2006/03/01 0:00:00 2300
2 2006/04/01 0:00:00 2400
3 2006/01/01 0:00:00 3000
3 2006/02/01 0:00:00 3200
3 2006/03/01 0:00:00 3300
3 2006/04/01 0:00:00 3400
4 2006/01/01 0:00:00 4000
4 2006/02/01 0:00:00 4200
4 2006/03/01 0:00:00 4300
4 2006/04/01 0:00:00 4400

 

で、検証に使用したSQLが以下の2つになります。

shopsテーブルでdelflagが1となっているIDを対象に

dataテーブルを取得し、valの合計値を求めるSQLになります。


SELECT
 data.id,
 sum(data.val) 
FROM
 data,
 shops
WHERE
 data.id = shops.id AND
 shops.delflag = 1 
GROUP BY
 data.id;
 

SELECT 
 id,
 sum(val)
FROM
  data
WHERE
  id IN 
 ( 
  SELECT
   id 
  FROM
   shops
  WHERE delflag = 1
 ) 
GROUP BY id ;

 

今回はSQLServer2005での実行検証なので、画像で実行計画をみせます♪

 

実行結果1

 

JOINではテーブルスキャン→ソート→マージ・ジョイン(ジョイン処理です)→計算→出力 ですが、

サブクエリではテーブルスキャン→ネスティド・ループジョイン(ジョイン処理です)→ソート→計算→出力になっています。

この例ですと、サブクエリのネスティド・ループジョインの方がコストが低く出ていますね。

(マージ・ジョインは17%、ネスティド・ループ・ジョインは1%)

なので、例ですとネスティド・ループ・ジョインとなるサブクエリの方がコスト低いと考えられます。

#JOINのソートは32%×2、サブクエリのソートは63%なので大差ないかな~

 

 

ついでに、例題のSQLからdelflagの条件を抜いた実行計画をお見せします。

実行結果2

今度はハッシュ・ジョインとネスティド・ループ・ジョインに変わりましたね。

で、ソートのコストが32%と63%になりました。

トータルとして66%と34%なので、サブクエリの方が良いSQLといえると思います。

 

 

<まとめ>

JOINとサブクエリは共に結合という処理が動いていますが、

上記例の場合、shopsテーブルから得られるデータを必要としていないため、

サブクエリでまとめ、データを取得した方がコストが低く抑えられる。

 

さて、次は何にしようかな。

スキーマとセキュリティの話と、

今回出てきた、ジョインの種類を説明するのと・・・・

あとチューニングネタ思いついたら・・・かな?

#なんせ、更新とろいので何がくるやら(^^;

#リクエストは随時募集しています。書く時期は未定となりますが(ぉぃ

投稿日時 : 2006年12月17日 0:20

コメント

# re: サブクエリとJOIN 2006/12/17 0:39 アクア
今日も深夜に技術ネタお疲れ様です。

今回も実行計画からの比較で非常に興味の尽きない内容でした。
# …まだ検証するほどSQL Server解らないので、一か月ぐらい浸ろうと思っていますョ。^^

# re: サブクエリとJOIN 2006/12/17 0:58 夏椰
しまった。
おいら、実行計画の端に牛ノートにつけた名前がばれたよぅ(w
#KAMEDA=CNNにいらっしゃる愛しのAD亀田さんです♪

>アクアさん
明日(ってか今日)試合なのに、私は何をしているんでしょうねぇ?

SQLServerはGUIベースで管理が出来るので
手を出しやすいですよね。
実行計画もマウス操作で簡単に取れてしまいますから、
いろんなSQLを実行していぢってあげてください。

気をつけるべきは、テストデータの作りすぎ(w
#おいら何度もこれでフリーズに近い状態になって、いぢけました(爆

# re: サブクエリとJOIN 2006/12/17 1:12 アクア
KAMEDA
このセンスが夏椰さんらしさの象徴かと…

Good Job !
牛ノートにしばし悩んだのは内緒w

# re: サブクエリとJOIN 2006/12/17 1:16 アクア
書き忘れ…

今日の試合頑張ってください!

# re: サブクエリとJOIN 2006/12/17 1:18 夏椰
私らしいってなんでしょう?
#普通にわからんっす。

試合はノンビリですよ・・・
クラブ対応でどうも勝ちを強制されているので
面倒なんだもん(爆

前衛・後衛どっちやるかも未定だし。
#チームで好きに決めてって(^^;



# re: サブクエリとJOIN 2006/12/17 8:02 十郎
IN使ってもJOINしてるんですねぇ
今までINは悪ってイメージがあったので、
普通にJOIN書いてました・・・
ちゃんと実行計画見て決めないといけないなぁ

勉強になりました( `・ω・´)ゝ”

# re: サブクエリとJOIN 2006/12/17 11:57 はつね
>十郎さん
Shopsデータの件数との兼ね合いもありますが、サブクエリ内で取得対象がぐっと絞り込めるようになっていて、INでみているのがDataデータのPKなので非常に効果が高いのだと思いますよ。

# re: サブクエリとJOIN 2006/12/17 16:32 十郎
>>はつねさん
ご指摘ありがとうございます。
勉強になります。

いつの頃からか
where句内でサブクエリは使わない、
inは悪!!っていう思い込みがあって、
今回のクエリもぱっと見ると
そりゃーサブクエリの方が遅いでしょとか思ってました・・・
無知は罪ですね^^;

実行計画の部分のTableScanってのが気になったので
1. PK無し
2. PK有り(クラスタ化)
3. PK有り(非クラスタ化)
の3パターンで試してみました。

作成したPKは以下です。
shopsテーブルのPKをID、
dataテーブルのPKをID、d

結果(サブツリーの推定コストで比較)
1. JOIN(0.0353832) サブクエリ(0.0181326) 夏椰さんの結果と同じ
2. JOIN(0.0065958) サブクエリ(0.0065958) 同一実行計画になった
3. JOIN(0.0141441) サブクエリ(0.0124803) サブクエリの方が優秀

クラスタINDEXはさすがに早いですね。
実行計画が同じになるのも興味深い結果でした。

# discount cartier love bracelet replica 2015/07/30 12:56 ehcismno@aol.com
Charlee, this comment makes me really happy. My dad has said he too wants to get to Burning Man someday… I hope he does, and you’ve inspired me that maybe I should be the one to bring him! I’m so glad you had such a great experience.
discount cartier love bracelet replica http://www.beauty-bracelet.com/

# eIcPJjubVpyKApaUja 2021/07/03 4:46 https://www.blogger.com/profile/060647091882378654
There is apparently a bundle to realize about this. I suppose you made certain good points in features also.

# plaquenil online 2022/12/27 3:46 MorrisReaks
https://hydroxychloroquinex.com/ aralen for sale

# online apotheke preisvergleich 2023/09/26 12:34 Williamreomo
http://onlineapotheke.tech/# versandapotheke versandkostenfrei
online apotheke deutschland

# internet apotheke 2023/09/26 14:30 Williamreomo
https://onlineapotheke.tech/# online apotheke preisvergleich
gГ?nstige online apotheke

# online apotheke gГјnstig 2023/09/27 1:35 Williamreomo
https://onlineapotheke.tech/# online apotheke deutschland
gГ?nstige online apotheke

# versandapotheke deutschland 2023/09/27 2:37 Williamreomo
https://onlineapotheke.tech/# internet apotheke
internet apotheke

# gГјnstige online apotheke 2023/09/27 10:12 Williamreomo
http://onlineapotheke.tech/# online apotheke preisvergleich
online apotheke preisvergleich

# п»їonline apotheke 2023/09/27 12:53 Williamreomo
https://onlineapotheke.tech/# п»?online apotheke
versandapotheke deutschland

# acquistare farmaci senza ricetta 2023/09/27 17:12 Rickeyrof
acheter sildenafil 100mg sans ordonnance

# farmacie on line spedizione gratuita 2023/09/27 20:09 Rickeyrof
acheter sildenafil 100mg sans ordonnance

# drug stores in canada 2023/10/16 17:06 Dannyhealm
Top-notch medications sourced globally. https://mexicanpharmonline.shop/# mexican pharmaceuticals online

# mexican rx online 2023/10/17 1:49 Dannyhealm
They have a great selection of wellness products. http://mexicanpharmonline.com/# mexico drug stores pharmacies

# canada meds online 2023/10/17 5:32 Dannyhealm
Their medication synchronization service is fantastic. https://mexicanpharmonline.com/# mexican border pharmacies shipping to usa

# canadian pills 2023/10/17 9:29 Dannyhealm
Their online portal is user-friendly and intuitive. http://mexicanpharmonline.shop/# mexican border pharmacies shipping to usa

# canadian pharmecy 2023/10/17 14:03 Dannyhealm
Medicament prescribing information. http://mexicanpharmonline.com/# mexican rx online

# canadian pharmacie 2023/10/17 14:37 Dannyhealm
Everything information about medication. http://mexicanpharmonline.shop/# pharmacies in mexico that ship to usa

# canada drug stores 2023/10/17 20:14 Dannyhealm
Quick, accurate, and dependable. http://mexicanpharmonline.com/# mexico drug stores pharmacies

# canadian mail order prescriptions 2023/10/18 1:55 Dannyhealm
Get information now. https://mexicanpharmonline.shop/# mexican mail order pharmacies

# best mexican pharmacies 2023/10/18 7:39 Dannyhealm
I appreciate their late hours for those unexpected needs. http://mexicanpharmonline.shop/# mexico drug stores pharmacies

# how to get a prescription in canada 2023/10/18 10:35 Dannyhealm
Been a loyal customer for years and theyв??ve never let me down. http://mexicanpharmonline.shop/# reputable mexican pharmacies online

# canadian drug store legit 2023/11/29 20:39 MichaelBum
http://paxlovid.club/# paxlovid price

# farmacias baratas online envío gratis 2023/12/07 22:58 RonnieCag
http://farmacia.best/# farmacia envíos internacionales

# ï»¿farmacia online 2023/12/08 2:09 RonnieCag
http://vardenafilo.icu/# farmacia barata

# farmacia online 24 horas 2023/12/08 8:09 RonnieCag
http://tadalafilo.pro/# farmacias online seguras

# farmacia envíos internacionales 2023/12/08 10:50 RonnieCag
https://vardenafilo.icu/# farmacia online

# ï»¿farmacia online 2023/12/08 13:42 RonnieCag
http://vardenafilo.icu/# farmacia online

# farmacia online barata 2023/12/09 11:27 RonnieCag
https://vardenafilo.icu/# farmacias online seguras en españa

# farmacia envíos internacionales 2023/12/09 17:18 RonnieCag
http://tadalafilo.pro/# farmacia envíos internacionales

# farmacias baratas online envío gratis 2023/12/09 20:44 RonnieCag
http://tadalafilo.pro/# farmacias online seguras

# farmacia envíos internacionales 2023/12/10 0:03 RonnieCag
https://farmacia.best/# farmacia online madrid

# farmacia online envío gratis 2023/12/10 3:38 RonnieCag
https://vardenafilo.icu/# farmacia barata

# farmacia envíos internacionales 2023/12/10 10:26 RonnieCag
https://tadalafilo.pro/# farmacia online 24 horas

# farmacia 24h 2023/12/10 13:20 RonnieCag
https://vardenafilo.icu/# farmacia online envío gratis

# farmacia envíos internacionales 2023/12/11 0:08 RonnieCag
https://farmacia.best/# farmacias online seguras

# farmacias online seguras en españa 2023/12/11 12:38 RonnieCag
https://vardenafilo.icu/# farmacia online madrid

# ï»¿farmacia online 2023/12/11 18:56 RonnieCag
https://vardenafilo.icu/# farmacia online madrid

# farmacias online baratas 2023/12/12 1:47 RonnieCag
http://vardenafilo.icu/# farmacia online barata

# farmacias online seguras en españa 2023/12/13 0:37 RonnieCag
http://sildenafilo.store/# sildenafilo cinfa precio

# Acheter médicaments sans ordonnance sur internet 2023/12/13 17:01 Larryedump
http://pharmacieenligne.guru/# Acheter médicaments sans ordonnance sur internet

# acheter medicament a l etranger sans ordonnance 2023/12/14 4:43 Larryedump
https://pharmacieenligne.guru/# pharmacie ouverte 24/24

# Pharmacie en ligne livraison rapide 2023/12/14 8:08 Larryedump
https://pharmacieenligne.guru/# pharmacie en ligne

# can i buy generic clomid without insurance 2023/12/27 20:25 RaymondGrido
http://prednisone.bid/# prednisone for dogs

# prednisone cream over the counter https://prednisonepharm.store/ where to buy prednisone in canada 2024/01/20 13:06 Prednisone
prednisone cream over the counter https://prednisonepharm.store/ where to buy prednisone in canada

# pin up bet https://pinupcassino.pro/ pin-up
2024/03/12 2:41 Cassino
pin up bet https://pinupcassino.pro/ pin-up


# pragmatic play gates of olympus - https://gatesofolympus.auction/ gates of olympus 2024/03/27 16:30 Olympic
pragmatic play gates of olympus - https://gatesofolympus.auction/ gates of olympus

Post Feedback

タイトル
名前
Url:
コメント