[pgsql-jp: 29038] Re: Like を使った前方一致検索時のインデックス使用条件について

Hajime Lucky Okada paraiso @ luckyo.8m.com
2003年 2月 14日 (金) 11:03:20 JST


岡田です。

今川さん、ありがとうございます。
速攻で試してみました。
速攻で結果が分かりました。  ま・こ・と・に興味深い結果です。


今川 晃 wrote:
> 
> SET ENABLE_SEQSCAN TO OFF;
> でしょう。
> 
> このコマンド、大変お世話になっております。

今すぐには、定量的な結果示せず申し訳無いのですが
(psql の中から msec オーダーでの時間測定の方法がわからない (^^;; )、
体感! で全然違う「反応」を感じ取れました。

このオプションで seqscan を offると、結果は瞬間で返ってきますね。


下が explain の結果です。
cost は・・・・掛かってます!  でも、速いですね。


xxxdb=> SET ENABLE_SEQSCAN TO OFF;
SET
xxxdb=> explain select plan_id, kenmei from kenmei where mitumori LIKE 'SI%';
                                           QUERY PLAN
------------------------------------------------------------------------------------------------
 Index Scan using idx1_plan on kenmei  (cost=0.00..1147.61 rows=1403 width=38)
   Index Cond: ((mitumori >= 'SI'::character varying) AND (mitumori < 'SJ'::character varying))
   Filter: (mitumori ~~ 'SI%'::text)
(3 rows)

xxxdb=> SET ENABLE_SEQSCAN TO On;
SET
xxxdb=> explain select plan_id, kenmei from kenmei where mitumori LIKE 'SI%';
                           QUERY PLAN
----------------------------------------------------------------
 Seq Scan on kenmei  (cost=0.00..423.27 rows=1403 width=38)
   Filter: (mitumori ~~ 'SI%'::text)
(2 rows)



さて、この結果を踏まえてどうするかですね。

今川さんのおっしゃる「このコマンド、大変お世話になっております」の肝は
もしかしたら こういう事にあるのでしょうか?





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