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

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


木村です。

>  武田と申します。
> 
> >プログラマがマルチカラムインデックスの順番を考慮してくれるか心配で、
> >バラで定義しても変わらないのならバラにしようかなあなどと思ったわけです。
> 
>  バラの定義とマルチの定義で列数が同じなら負荷は「バラ>マルチ」ですが、↓の最後の
> 一節のようなアドバイスもあります。

なるほど、確かにこうで無かれば意味ないですよね。

> 
> http://www.postgresql.jp/document/pg803doc/html/indexes-multicolumn.html
> 
>  使われ方がきとんと様式化されていれば問題ないのでしょうが、引用部のような状況だ
> と、ちょっと期待薄そうですね。

リンク先の説明をみて、今回のこの状況だとバラで作った方がいいようです。

> 
>  折衷案としては、データモデルはあくまで自分の好きに設計してそれをviewでカプセル化
> してみてはいかがでしょうか?

なるほど、そういう手もありますよね。
しかしながらすでにSQLはほぼ全て作成済みのため、今更個々にカプセル化はちょっと無理ですね。
(現在パフォーマンスチューニング中です)

大変参考になりました。

> 
> 
> -----Original Message-----
> From: pgsql-jp-bounces @ ml.postgresql.jp [mailto:pgsql-jp-bounces @ ml.postgresql.jp]
> On Behalf Of KIMURA Norihiko
> Sent: Monday, June 27, 2005 4:19 PM
> To: PostgreSQL Japanese Mailing List
> Subject: [pgsql-jp: 35606] Re: マルチカラムインデックスについて
> 
> 木村です。
> 
> お返事ありがとうございます。
> 
> > 水野です。
> >
> > > -----Original Message-----
> > > マルチカラムインデックスの場合、
> > > 最初のカラムを検索条件に含まなかったり、ANDで結合していない場合、
> > > インデックスが使われないといった事がありますが、
> > > それ以外にバラでインデックスを作った場合との違い(パフォーマンス上の違いなど)
> はあるのでしょうか?
> >
> > 私の個人的な解釈では
> >   インデックスって基本的にSELECT文を高速に実行するための
> >   物なので、「まずインデックスありき」ではなく、SELECT文で
> >   使いたい検索条件に合わせて、それと同じカラムをインデックス
> >   として定義する。
> > と思っていたのですが。
> 
> 
> なるほど、インデックスはそれを用い検索したものがあるから定義するわけで、
> そのためのマルチカラムインデックスって事ですね。
> 
> なので、メンテナンス性やどう組んでもインデックスを使われるように等と考えて、
> バラで組むのは本末転倒と言うわけですね。
> 
> 
> >
> > 逆説的に書くと「SELECT文の条件として使わないカラムを
> > インデックスとして定義する事に意味はあるの?」
> > という事です。
> 
> それは定義する気は無いのですが、
> 
> > 一気にレコード数を絞り込めるカラムがあるなら、それ単独で
> > インデックスを定義してもそれなりの効果が期待できるとは
> > 思います。
> 
> プログラマがマルチカラムインデックスの順番を考慮してくれるか心配で、
> バラで定義しても変わらないのならバラにしようかなあなどと思ったわけです。
> 
> 確かにこれは邪道と言うか本来の趣旨から外れている気もしますね。
> 

§-----------------------------------------------------§
テックファーム 株式会社
Techfirm Inc.
 
木村 宣彦
KIMURA Norihiko

プロフェッショナルサービス事業部 
     Webテクノロジーグループ
Web Technology Group, 
     Professional Service Div.

〒150-0011 東京都渋谷区東1丁目32-12 
     渋谷プロパティー東急ビル4F
Shibuya Property Tokyu Bldg 4F, 
     1-32-12, Higashi, Shibuya-ku, Tokyo-to 150-0011, JAPAN

電話: 03-5468-2288(代表)           
     / fax: 03-5468-2345
phone: +81-3-5468-2778(key number) 
     / fax: +81-3-5468-2791

E-mail: norihiko @ techfirm.co.jp    
     / URL: http://www.techfirm.co.jp/
§-----------------------------------------------------§






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