[pgsql-jp: 31084] explainの結果が違う
Akihito Imai
acdc @ livedoor.com
2003年 9月 18日 (木) 11:52:05 JST
a-kiと申します。
いつも参考にさせていただいています。
現在、2つのテーブルを結合させて情報取得をしようとしているのですが、
環境によって処理速度が全く違うため、そのSQLをexplainしてみたのですが、
結果が違いました。
両方とも環境は
RedHat7.2
Postgresql7.3.3
を使用しています。
このような現象をご存知ではありませんでしょうか?
実行SQL
select * from test1,test2
WHERE test2.col1 = test1.col1 AND
test2.col2 = test1.col2 AND
test2.col3 = test1.col3;
test1には1000行
test2には2000行のデータ。
indexは張っていません。
環境A(問題なしにすぐ結果表示。)
Merge Join (cost=139.66..149.66 rows=1 width=739)
Merge Cond: (("outer".col3 = "inner".col3) AND ("outer".col2 = "inner".col2) AND ("outer".col1 = "inner".col1))
-> Sort (cost=69.83..72.33 rows=1000 width=175)
Sort Key: test1.col3, test1.col2, test1.col1
-> Seq Scan on test1 (cost=0.00..20.00 rows=1000 width=175)
-> Sort (cost=69.83..72.33 rows=1000 width=564)
Sort Key: test2.col3, test2.col2, test2.col1
-> Seq Scan on test2 (cost=0.00..20.00 rows=1000 width=564)
環境B(環境Aと比べ、約10倍ほど時間がかかる。)
Hash Join (cost=22.50..385.00 rows=1 width=1543)
Hash Cond: ("outer".col1 = "inner".col1)
Join Filter: (("outer".col2 = "inner".col2) AND ("outer".col3 = "inner".col3))
-> Seq Scan on test2 (cost=0.00..20.00 rows=1000 width=1238)
-> Hash (cost=20.00..20.00 rows=1000 width=305)
-> Seq Scan on test1 (cost=0.00..20.00 rows=1000 width=305)
pgsql-jp メーリングリストの案内