0

我有一个包含事件的 sqlite3 数据库。每个事件要么是某事发生的“开”,要么是“关”,并且包含事件的时间以及事件是什么以及一些因事件而异的杂项数据。

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

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

这行得通,但是当我有很多要查找最新事件的事件时,它会很慢。我怀疑这是因为对于每个 SELECT 都必须对数据库进行全面扫描(几百万行),但我找不到更有效的方法来做到这一点。

4

1 回答 1

1

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

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

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

于 2012-10-12T06:34:01.910 回答