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