我有一个 Table foo 记录鸟类的目击记录。foo_id 是它的PK,其他关注的列是s_date、纬度和经度。species_id 是它的 FK。我有关于 s_date、纬度和经度、species_id 的索引。表 foo 有 2000 万条记录并且还在增加。以下查询为我提供了给定纬度/经度的前 10 个最新物种目击事件。查询花费了太多时间(有时超过 10 分钟)。如何优化它?我正在使用mysql。
SELECT species_id, max(s_date)
FROM foo
WHERE latitude >= minlat
AND latitude <= maxlat
AND longitude >= minlon
AND longitude <= max lon
GROUP BY species_id
ORDER BY MAX(s_date) DESC LIMIT 0, 10;