[pgsql-jp: 32573] Re: 最適化につてご質問

Kenji Ono ono @ fjct.fujitsu.com
2004年 3月 25日 (木) 20:20:59 JST


小野といいます。

> 給与テーブルがあるとして、そこに毎月の給与を記入します。
> ある日、財務健全化のため、毎月の給与が20万円以上の者を
> 対象とするプログラムが組まれたとします。
> するとこのテーブルに対し > 20万円という条件で
> select 文を発行しなくてはなりません。
> 
> また、国籍が日本以外の者に対しては各種手当てを適用しようとします。
> 
> テーブルを作るときに良く考えておくべきだったと
> 思いますが、(設計も含めて)検索の速度を早めるには
> どの様な手法がありますか?

この記述からいくと、今更正規化などは行えない状況と判断しました。
その事も書いてくれるとありがたいのですが・・・。
で、テーブルの変更はダメとすると、手っ取り早くWhere条件となると
ことろに「Create Index」をはりましょう。

eqt=# \h create index
Command:     CREATE INDEX
Description: define a new index
Syntax:
CREATE [ UNIQUE ] INDEX index_name ON table
    [ USING acc_method ] ( column [ ops_name ] [, ...] )
    [ WHERE predicate ]
CREATE [ UNIQUE ] INDEX index_name ON table
    [ USING acc_method ] ( func_name( column [, ... ]) [ ops_name ] )
    [ WHERE predicate ]

eqt=#

ユニークにならなくても効果は大です。
当然、ユニークになれば高速化できます。
Explanなどでチューニングもお忘れなく。



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