2008年2月 1日

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

石井です。

メールの文と順序が異なりますが、お許し下さい。

> >>以下も試していたのですが、やはりindexはA1が利用されており、複合indexが利用されません。whereを抜くと使っ
> てくれるのですが...
> >
> >>> 未検証ですが、A1列とA2列に複合インデクスを定義し、

> >>> select * from A where A1=1 order by A1,A2 limit 200
> >>> とした場合、どうでしょうか?
> >
> > インデクスの定義を(A1,A2)の順とし、「order by
> A1,A2」と、インデクスを構成する先頭列から順番にorder by指定されているでしょうか?
> > もしこれが勘違いであれば、すべて納得できます。

これは複合indexの指定順を間違ってしまったようです。複合indexをA2,A1で作成してしまったようです。
申し訳ありません。
再度、A1,A2で複合indexを作成し、
select * from A where A1=1 order by A1,A2 limit 200
を試したところ、複合indexが利用され、パフォーマンスの改善も確認できました。
ありがとうございます。

> > A1列の値ですが、「すべて0」または「殆どが0」になっていないでしょうか?
>
> は、「すべて1」または「殆どが1」の誤りでした。訂正します。

そのとおりです。このこのテスト環境のデータはA1は全て1で、実環境でもデータとしては
A1は最大でも10種類程度しかない想定です。

よろしくお願いいたします。

投稿者 xml-rpc : 2008年2月 1日 12:34
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69318
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。