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

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


こんにちは、岡田です。

Naofumi Kondoh wrote:
> 
> PostgreSQL で、強制的に index を使用させる方法ってありますか。
> 
> 現実問題として、当該 LIKE 文での、SEQ SCAN と INDEX SCAN
> で、本当に速度に有意差があるかですね。データーの偏りによっては、
> 以外と SEQ SCAN の方が早かったりすることもあります。

何かの書類で「PostgreSQL で、強制的に index を使用させる方法」というのを
見たことがある・・・様な・・気がします。  でも、まだ見つかりません。
(もしかしたら、強制的な「ロック」の勘違いかも知れません (^^;;)


> LIKE '%A%' のような検索を高速化するには、垂直 partitioning
> という手法があります。PostgreSQL には実装されていませんが、
> Sybase にはあると思いました。
> 
> PostgreSQL で、頻繁に高速で全件検索を行わなければならない
> 場合の変則的な手法としては、検索する当該列と PRIMARY KEY
> だけからなる別表を作ります。   そうすれば、全件検索で、
> HDD から読みとる総バイト数が少なくなりますので、結果として
> この検索だけは高速になります。勿論、元の表を検索・更新する
> 場合は、別表にした表を結合しなければいけないので、速度は落
> ちるしプログラムも面倒になります。あくまでも、特種な場合の
> 変則的手段です。

私の必要要件は、高速な「前方一致」検索が出来れば十分で、
部分検索、後方一致といった考えるだけでも重たそうな
「贅沢な」事は希望してません (^o^)

何れにしても、このデータ、10 年後には数百万件になる「予定」で
この状態での「前方一致」検索でインデックスの使用が出来ないと・・
ちょっと辛いかもしれませんね (^^;;

一カラムの単純な検索だけに・・・




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