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