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