我有一个结构简单的表格,如下所示:
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 秒的行的“已删除”列变为“真”。