[pgsql-jp: 36442] Re: 複合インデックス時のORDER BY DESC

池上 俊介 shun @ baytime.com
2005年 11月 27日 (日) 12:16:19 JST


池上です。

福島さん。ありがとうございます。

この方法でsortが使われないことを確認することができました。
また、jのカラムがtimestampだった場合でも
('3000-1-1'::timestamp - pubdate)のような形でインデックスをつくることで
sortが使用しないことを確認できました。

とてもトリッキーなテクニックですね!
ありがとうございます。感謝です。




FUKUSHIMA Katsuaki wrote:
> 福島@現実逃避モードです。
> 
> ORDER BY x DESC 高速化に対する直接の回答ではないですし、無茶な方法で
> す。過去にどうしても必要に迫られて使いました。当時いろいろ試行錯誤し
> てみたんですが、こんな方法しか思いつきませんでした。
> 
> 以下のようなインデックスを作成しておいて、
> CREATE INDEX idx_articles_i_j_d ON articles(i,(0-j));
> データの抽出は、
> SELECT * FROM articles WHERE i = 30 ORDER BY i,(0-j) LIMIT 10;
> 
> 正統解とは程遠いと思いますが、ご参考になれば。
> 
> 池上 俊介 wrote:
> 
> 
>>メール末のarticlesテーブルに複合インデックスを作成し、
>>SELECT * FROM articles WHERE i = 30 ORDER BY j DESC LIMIT 10;
>>のような検索を高速化したいと思っています。




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