次のように簡単に構成されたテーブルがあります。
tn( id integer NOT NULL primary key DEFAULT nextval('tn_sequence'),
create_dt TIMESTAMP NOT NULL DEFAULT NOW(),
...............
deleted boolean );
create_dt
行がデータベースに挿入されたときのタイムスタンプです。
deleted
行が有用であるか、もはや役に立たないことを示します。
そして、次のクエリがあります。
select * from tn where create_dt > ( NOW() - interval '150 seconds ) and deleted = FALSE;
select * from tn where create_dt < ( NOW() - interval '150 seconds ) and deleted = FALSE;
私の質問は、行数が増えるとこれらのクエリがどのように遅くなるかです。たとえば、行数が 10K、20K、または 100K を超える場合、速度に大きな影響を与えるでしょうか? これらのクエリを最適化する方法はありますか? 5 秒ごとに、150 秒より古い行の「削除済み」列を「TRUE」に変更することに注意してください。