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

このクエリを高速化するには、nameおよびtフィールドに 1 つのインデックスを作成してみてください。

于 2012-10-12T06:34:01.910 に答える