[pgsql-jp: 25464] Re: deleteにすごく時間がかかる現象について

Shigeki Mimura mimu @ telepass.co.jp
2002年 3月 28日 (木) 18:57:39 JST


三村です。

つるつるさんも言っていますが、inを使うと遅くなると思います。
あまりきれいじゃないんですが、こういうのはどうでしょう?

SELECT * from history where time<=(SELECT max(time) from (SELECT * from history order by time desc limit 20000) a)

つまり

1.SELECT time from history order by value limit 20000
でhistoryテーブルを昇順でソートして20000件とってくる。

2.SELECT max(time)...
で1でとってきたtimeの最大値をとる。

3.DELETE FROM history where time<=...
で2でとってきた最大時刻以前のデータを削除する。

order byを使うと集約関数が使えないのでこんなになってしまいましたが、
もっときれいに書ける、と言うのが有りましたらどうぞ突っ込んでやって下さい。



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