我有一个包含事件的sqlite3数据库。每个事件都是“发生”或“关闭”发生的事情,并包含事件的时间以及事件的内容以及因事件而异的一些杂项数据。
我想查询以查找每种类型的最后一个事件。到目前为止,这是我提出的问题:
SELECT * from event where name='event1on' or name='event1off' ORDER BY t DESC LIMIT 1
这很有效,但是当我想要找到最新的一些事件时,它很慢。我怀疑这是因为对于每个SELECT,必须对数据库进行全面扫描(数百万行),但我无法找到更有效的方法来执行此操作。
答案 0 :(得分:1)
如果你有SQLite 3.7.11或更高版本,你可以使用max
从记录中选择包含最大值的其他字段:
SELECT *, max(t) FROM event GROUP BY name
要加快此查询速度,请尝试在name
和t
字段上创建一个索引。