2010年10月27日

[pgsql-jp: 40473] Re:SQLの検索性能について

>(TBL定義)
> ===
> CREATE TABLE LOG_TBL
> (
> NODE_NAME VARCHAR(8),
> PROC_NAME VARCHAR(25),
> LOG_DATE TIMESTAMP,
> LOG_MESSAGE TEXT,

> REC_DATE TIMESTAMP
> )
> ===
> →主KEYは無く、IndexをLOG_DATE列に付与しています。
>
> これまでの調査経緯)
> ===
> 以下のSQL(ORDER BYと OFFSET/LIMITを指定したSQL)で検証
> SELECT * FROM LOG_TBL
> WHERE LOG_DATE BETWEEN [下限値] AND [上限値]
> ORDER BY LOG_DATE, REC_DATE
> OFFSET 0 LIMIT 1001;
>
> LOG_DATEの範囲を変えながら以下2種類の検索を実行
> (1) BETWEEN '2010-08-20 00:00:00' AND '2010-08-20 23:59:59' で
> 200,000件が該当し、LIMITにより直近1001件が返される検索
> (1パーティションが該当)
> (2) BETWEEN '2010-07-21 00:00:00' AND '2010-08-20 23:59:59' で
> 6,200,000件が該当し、LIMITにより直近1001件が返される検索
> (2パーティションが該当)

お疲れ様です。
まずは、実行計画を取得するところから初めてはいかがですか。
実データのソートが発生しているようなら、「LOG_DATE,REC_DATE」
に索引を変更することで改善する余地はあると思います。

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




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