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

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


岡田です。

自己レスなんですが、これまたすごい結果が出ました (^o^)

DB クラスタ自体を次の様に作り直し、その他は全く同じ手法で検証してみました。

initdb -E EUC_JP --no-locale

この後、ダンプしてあったデータを元に戻して(== table 構造 全く同一)、
定量的な検査を実行してみました。

xxxdb=> \timing
Timing is on.
xxxdb=> explain select plan_id, kenmei from kenmei where mitumori LIKE 'SI%';
                                           QUERY PLAN
------------------------------------------------------------------------------------------------
 Index Scan using idx1_plan on kenmei  (cost=0.00..193.85 rows=52 width=466)
   Index Cond: ((mitumori >= 'SI'::character varying) AND (mitumori < 'SJ'::character varying))
   Filter: (mitumori ~~ 'SI%'::text)
(3 rows)

Time: 15.37 ms
xxxdb=>

前と全く同じやり方ですが、今回はきちんとインデックスを利用してくれ、
時間も以前 速い!と言っていたよりも更に 6 倍強 速くなっていますね。
cost も安くなってます (^^;;


--no-locale オプションがここまで重要とは知らなかったのですが、
ダンプ → initdb → restore 「だけ」の修正なので、これで様子を
見てみようと思います。

みなさん、ありがとうございました。
もし、コメントありましたら宜しくお願い致します。
岡田はじめ




Hajime Lucky Okada wrote:
> 
> 2.--no-locale の件
>     Release Note?  これもどの種類か忘れましたが、./configure する際にも
>     指定すべき、という記述を目にしたことがあります。 過去ログにもあったので
>     今回 投稿する際、この記述を入れるべきかどうか迷ってました。
>     で、現状は確かに configure 時にも initdb 時にも指定してはいませんでした。
> 
>     ビルドし直しというのはちょっと負荷が重いので、initdb からでも良いというので
>     あれば、一度 早急に試してみたいと思います。








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