在sqlite3中找到大量“最新”事件的有效方法

时间:2012-10-12 04:56:01

标签: performance select sqlite

我有一个包含事件的sqlite3数据库。每个事件都是“发生”或“关闭”发生的事情,并包含事件的时间以及事件的内容以及因事件而异的一些杂项数据。

我想查询以查找每种类型的最后一个事件。到目前为止,这是我提出的问题:

SELECT * from event where name='event1on' or name='event1off' ORDER BY t DESC LIMIT 1

这很有效,但是当我想要找到最新的一些事件时,它很慢。我怀疑这是因为对于每个SELECT,必须对数据库进行全面扫描(数百万行),但我无法找到更有效的方法来执行此操作。

1 个答案:

答案 0 :(得分:1)

如果你有SQLite 3.7.11或更高版本,你可以使用max从记录中选择包含最大值的其他字段:

SELECT *, max(t) FROM event GROUP BY name

要加快此查询速度,请尝试在namet字段上创建一个索引。