Anda ingin indeks komposit di atas (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
Alasan untuk ini adalah MySQL kemudian dapat mengambil time
maksimum untuk setiap objectID
langsung dari pohon indeks; kemudian juga dapat menggunakan indeks yang sama dalam bergabung melawan tabel lagi untuk menemukan maksimum berdasarkan grup
catatan menggunakan sesuatu seperti kueri kedua Anda (tetapi seseorang harus bergabung di kedua objectID
dan time
—Saya suka menggunakan NATURAL JOIN
dalam kasus seperti ini):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t