[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 メーリングリストの案内