[pgsql-jp: 30286] indexを使用しない/使用する違いは?
Genshirou Taki
g_taki @ max-corporation.com
2003年 6月 30日 (月) 20:19:06 JST
g_takiです。
サーバの環境によって、同じSQL文でもindexを使わない場合があるのでしょうか?
2箇所の異なった環境に、同じSQLで発行したTableなどがあり、
explain を行ったところ、環境Aでは、indexを使用していると表示されたのです
が、環境Bではindexを使用していませんでした。
vacuumdb -a -f -z を行っても結果は同じでした。
この例では3千件程度ですが、100万件以上のデータを投入する予定なので、
そのときのパフォーマンス低下が気になります。
環境A Pentium II 400MHz
Memory 384MB
Postgres 7.3.3
Solaris 9 IA
gcc-3.2.3
環境B Pentium III 1GHz 以上(正確なところは不明)
Memory 1GB
Postgres 7.2.2
Tourbo Linux (バージョン不明)
コンパイラ不明
テーブル作成に使用したSQL文
create table haisyutu_map(
id_area integer,
id_material integer,
img_total integer,
img_todokede integer,
img_todokedegai integer,
img_taisyou integer,
img_hitaisyou integer,
img_katei integer,
img_idou integer,
img_noudo integer,
primary key(id_area, id_material)
);
explain時のSQL文
explain select * from haisyutu_map WHERE id_area = 80;
環境Aの結果
Index Scan using haisyutu_map_pkey on haisyutu_map (cost=0.00..17.07
rows=5 width=40)
Index Cond: (id_area = 80)
環境Bの結果
Seq Scan on haisyutu_map (cost=0.00..78.25 rows=353 width=40)
--
Genshirou Taki <g_taki @ max-corporation.com>
pgsql-jp メーリングリストの案内