次のように定義されたテーブルがあります...
CREATE table actions (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
end BOOLEAN,
type VARCHAR(15) NOT NULL,
subtype_a VARCHAR(15),
subtype_b VARCHAR(15),
);
group by と同様に、特定のタイプの最後の終了アクションが各一意のペアで発生するようにクエリを実行しようとしています(ただし、SQLite では、group by によって返されることが保証されている(subtype_a, subtype_b)
行はわかりません)。
約 1MB の SQLite データベースでは、クエリに2 秒以上かかる場合がありますが、1 秒未満になるように高速化する必要があります (これは頻繁に呼び出されるため)。
クエリの例:
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)