[pgsql-jp: 29471] Re: インデックスの利用について

shiina shiina @ senpo.com
2003年 3月 24日 (月) 14:22:57 JST


椎名です。

杉田さん、返信が遅れて申し訳ありません。

>   explain analyze の結果は、どうなるでしょうか?

普通の状態で

 Group  (cost=56581.99..56745.32 rows=1633 width=31) 
        (actual time=76308.37..76308.38 rows=1 loops=1)
   ->  Sort  (cost=56581.99..56622.82 rows=16333 width=31) 
             (actual time=76308.33..76308.33 rows=1 loops=1)
         Sort Key: t1_key_p1, t1_key_s1, t1_key_s2
         ->  Seq Scan on keiri_kamoku_zandaka  
                (cost=0.00..55439.06 rows=16333 width=31) 
                (actual time=53232.60..76235.40 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: 76308.76 msec

set enable_seqscan = false;
を実行後

 Group  (cost=0.00..63985.27 rows=1633 width=31) 
        (actual time=51.02..51.02 rows=1 loops=1)
   ->  Index Scan using table1_key1 on table1  
     (cost=0.00..63862.77 rows=16333 width=31) 
     (actual time=50.99..51.01 rows=1 loops=1)
         Index Cond: ((t1_key_p1 = 'aaa'::character varying)
                  AND (t1_key_s1 = 'bbb'::character varying)
                  AND (t1_key_s2 >= '999'::character varying))
 Total runtime: 68.78 msec

このような結果になりました。

>   enable_seqscan = false をするとしても postgresql.conf ではせずに、
> 
>     set enable_seqscan to false;
>     それでよいと確信を持てるクエリー;
>     set enable_seqscan to true;
> 
> の方がいいと思います。

使い分けないといけないということですね。




pgsql-jp メーリングリストの案内