我有一个如下定义的表...
CREATE table actions (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
end BOOLEAN,
type VARCHAR(15) NOT NULL,
subtype_a VARCHAR(15),
subtype_b VARCHAR(15),
);
我正在尝试查询在每个唯一(subtype_a, subtype_b)
对上发生的某种类型的最后一个结束操作,类似于 group by(除了 SQLite 没有说明group by 保证返回哪一行)。
在大约 1MB 的 SQLite 数据库上,我现在的查询可能需要两秒钟以上的时间,但我需要加快速度,使其不到一秒钟(因为这将被频繁调用)。
示例查询:
SELECT * FROM actions a_out
WHERE id =
(SELECT MAX(a_in.id) FROM actions a_in
WHERE a_out.subtype_a = a_in.subtype_a
AND a_out.subtype_b = a_in.subtype_b
AND a_in.status IS NOT NULL
AND a_in.type = "some_type");
如果它有帮助,我知道所有独特的可能性(subtype_a,subtype_b)
例如:
(a,1)
(a,2)
(b,3)
(b,4)
(b,5)
(b,6)