[pgsql-jp: 35606] Re: マルチカラムインデックスについて

KIMURA Norihiko norihiko @ techfirm.co.jp
2005年 6月 27日 (月) 16:18:45 JST


木村です。

お返事ありがとうございます。

> 水野です。
> 
> > -----Original Message-----
> > マルチカラムインデックスの場合、
> > 最初のカラムを検索条件に含まなかったり、ANDで結合していない場合、
> > インデックスが使われないといった事がありますが、
> > それ以外にバラでインデックスを作った場合との違い(パフォーマンス上の違いなど)はあるのでしょうか?
> 
> 私の個人的な解釈では
>   インデックスって基本的にSELECT文を高速に実行するための
>   物なので、「まずインデックスありき」ではなく、SELECT文で
>   使いたい検索条件に合わせて、それと同じカラムをインデックス
>   として定義する。
> と思っていたのですが。


なるほど、インデックスはそれを用い検索したものがあるから定義するわけで、
そのためのマルチカラムインデックスって事ですね。

なので、メンテナンス性やどう組んでもインデックスを使われるように等と考えて、
バラで組むのは本末転倒と言うわけですね。


> 
> 逆説的に書くと「SELECT文の条件として使わないカラムを
> インデックスとして定義する事に意味はあるの?」
> という事です。

それは定義する気は無いのですが、

> 一気にレコード数を絞り込めるカラムがあるなら、それ単独で
> インデックスを定義してもそれなりの効果が期待できるとは
> 思います。

プログラマがマルチカラムインデックスの順番を考慮してくれるか心配で、
バラで定義しても変わらないのならバラにしようかなあなどと思ったわけです。

確かにこれは邪道と言うか本来の趣旨から外れている気もしますね。






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