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