[pgsql-jp: 39094] Indexを使ったパフォーマンス向上

Ishii, Satoshi (PSNC) ishiis @ jp.sony.com
2008年 1月 29日 (火) 15:22:56 JST


石井と申します。

初歩的かもしれませんが、アドバイスいただけると助かります。 

・環境
FedoraCore 2
Posgresql  7.4.2

- AというテーブルにA1,A2というカラムがあるとします。
- A1とA2にはindex(btree)を作成しています。
- Aのレコード件数は多く40-50万件

これに対し、以下のようなSQLを投げ、EXPLAIN ANALIZEを入れると、利用されている
IndexはA1と表示されます。レコード件数が多いせいもあると思いますが、30秒近くかかります。

select * from A where A1=1 order by A2 limit 200

一方、上記でwhere A1=1を外すと、一瞬で結果が表示されます。この場合、A2が利用されている
ようです。また、Where A1=1を残し、order by A2 limit 200を外すと、5-6秒程度の検索時間になります。

また、A1,A2の複合indexも作成してみましたが、結果は変わりませんでした。

SQL文を工夫したり、indexを変更するなどして、上記30秒を改善することはできないものでしょうか?

いい方法などありましたら、コメントいただければと思います。



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