[pgsql-jp: 29033] Re: Like を使った前方一致検索時のインデックス使用条件について
Naofumi Kondoh
nkon @ shonan.ne.jp
2003年 2月 14日 (金) 09:58:10 JST
ソフト工房の近藤です。
Mashiki wrote:
> Mashikiです。
...略...
> あとは強制的にインデックスを使わせるとか。
PostgreSQL で、強制的に index を使用させる方法ってありますか。
現実問題として、当該 LIKE 文での、SEQ SCAN と INDEX SCAN
で、本当に速度に有意差があるかですね。データーの偏りによっては、
以外と SEQ SCAN の方が早かったりすることもあります。
....略...
> # いずれにしても、'%A%'はお手上げです。別の工夫が必要ですね。
LIKE '%A%' のような検索を高速化するには、垂直 partitioning
という手法があります。PostgreSQL には実装されていませんが、
Sybase にはあると思いました。
PostgreSQL で、頻繁に高速で全件検索を行わなければならない
場合の変則的な手法としては、検索する当該列と PRIMARY KEY
だけからなる別表を作ります。 そうすれば、全件検索で、
HDD から読みとる総バイト数が少なくなりますので、結果として
この検索だけは高速になります。勿論、元の表を検索・更新する
場合は、別表にした表を結合しなければいけないので、速度は落
ちるしプログラムも面倒になります。あくまでも、特種な場合の
変則的手段です。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon @ shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/ http://www.shonan.ne.jp/~nkon/
2003-03-20(木)19:00〜21:45第11回 PostgreSQL業務アプリ分科会勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
pgsql-jp メーリングリストの案内