查询SQL中最新条目的最有效方法是什么?

时间:2015-03-24 15:59:25

标签: sql sqlite

我有一个SQL风格的数据库,带有一个用于记录事件的简单表。每个事件都有一个时间戳,并且只从单个线程更新(因此我们可以相信表中的条目将始终按时间顺序)。该表可能有数月的数据。如果我想查询最近的条目,说最后一天的价值,最好的方法是什么?

我可以这样做:

SELECT * FROM events WHERE timestamp > [some time];

但是这必须检查数据库中的每个事件。我在伪代码中实际想做的是:

get the rows at the end of the table back as far as where timestamp is greater than [some time]

这可能吗?还是必要的?

2 个答案:

答案 0 :(得分:3)

最有效的方法是使用查询:

SELECT *
FROM events
WHERE timestamp > [some time];

(评论:这是您的查询。)

要在timestamp上设置索引:

create index idx_events_timestamp on events(timestamp);

答案 1 :(得分:1)

同意@GordonLinoff的回答。根据我的经验,必须有非常大量的数据才能变慢 - 数据库经过优化,可以在列编制索引时很好地处理这些数据。

这里的事情是SQL不保证返回行的顺序,除非你使用{{1>},这将更慢。