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