LEFT JOINした時は片方のテーブルがSeq Scanになるのか??

公開日: : 最終更新日:2013/11/11 SQL

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。


QUERY PLAN
Limit (cost=962.33..3137.59 rows=10 width=64) (actual time=2622.341..2622.851 rows=10 loops=1)
-> Unique (cost=962.33..44467.66 rows=200 width=64) (actual time=2622.340..2622.850 rows=10 loops=1)
-> Merge Left Join (cost=962.33..42038.45 rows=971685 width=64) (actual time=2622.338..2622.835 rows=10 loops=1)
Merge Cond: (xxx.path = xxx.path)
Filter: (xxx.path IS NULL)
-> Index Scan using xxx on xxx (cost=0.00..11773.97 rows=60645 width=64) (actual time=0.093..62.604 rows=6266 loops=1)
-> Sort (cost=962.33..978.35 rows=6409 width=32) (actual time=2458.486..2462.483 rows=6257 loops=1)
Sort Key: xxx.path
-> Seq Scan on xxx (cost=0.00..557.09 rows=6409 width=32) (actual time=0.020..13.958 rows=23420 loops=1)
Total runtime: 2693.484 ms
(10 rows)

両方のテーブルのpathには

“index_xxx_on_path” btree (path)

こんな感じでインデックスを作成しているのだけど。

TODO

  • PostgreSQLにおけるLEFT JOINの実装について調べる

追記

レコード件数によって両方Index Scanになったり両方Seq Scanになったりしているので、どうもPostgresのオプティマイザが最適な実行プランをその都度判断しているっぽい。

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑