[pgsql-jp: 29481] Re: インデックスの利用について
shiina
shiina @ senpo.com
2003年 3月 27日 (木) 13:33:17 JST
椎名です。
杉田さん
ちょっとトラブルがありまして、せっかく付き合っていただいているの
に反応が遅くてすいません。
> t1_key_s2 を先頭にする、例えば以下のようなインデックスを追加したのを試してい
> ただけないでしょうか?
>
> create index table1_key2 on table1
> (t1_key_s2, t1_key_p1, t1_key_s1);
>
create index table1_key2 on table1
(t1_key_s2, t1_key_p1, t1_key_s1);
vacuum full analyze table1;
drop index table1_key1;
をやりました。
Group (cost=55921.29..56066.14 rows=1448 width=31)
(actual time=87988.01..87988.01 rows=1 loops=1)
-> Sort (cost=55921.29..55957.50 rows=14485 width=31)
(actual time=87987.98..87987.98 rows=1 loops=1)
Sort Key: t1_key_p1, t1_key_s1, t1_key_s2
-> Seq Scan on table1
(cost=0.00..54920.21 rows=14485 width=31)
(actual time=60708.69..87987.74 rows=1 loops=1)
Filter: ((t1_key_p1 = 'aaa'::character varying) AND
(t1_key_s1 = 'bbb'::character varying)) AND
(t1_key_s2 >= '999'::character varying)
Total runtime: 88003.87 msec
set enable_seqscan = false;
Group (cost=57742.87..57887.72 rows=1448 width=31)
(actual time=4351.52..4351.52 rows=1 loops=1)
-> Sort (cost=57742.87..57779.08 rows=14485 width=31)
(actual time=4351.48..4351.49 rows=1 loops=1)
Sort Key: t1_key_p1, t1_key_s1, t1_key_s2
-> Index Scan using table1_key2 on table1
(cost=0.00..56741.80 rows=14485 width=31)
(actual time=3114.79..4351.31 rows=1 loops=1)
Index Cond: ((t1_key_s2 >= '999'::character varying) AND
(t1_key_p1 = 'aaa'::character varying) AND
(t1_key_s1 = 'bbb'::character varying))
Total runtime: 4351.82 msec
結果は同じでした。
オプティマイザがコストの判断を間違っているのでしょうか?
pgsql-jp メーリングリストの案内