(objectID, time)
の複合インデックスが必要です :
ALTER TABLE my_table ADD INDEX (objectID, time)
これは、MySQLが最大time
を取得できるためです。 objectID
ごとに インデックスツリーから直接;次に、同じインデックスを使用してテーブルを再度結合し、グループごとの最大値
2番目のクエリのようなものを使用してレコードを作成します(ただし、1つは両方のobjectID
で結合する必要があります およびtime
-NATURAL JOIN
を使用するのが好きです このような場合):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t