我有一个表foo它记录鸟类的目击。 foo_id是它的PK,其他有关的列是s_date,纬度和经度。 species_id是它的FK。我有索引s_date,经度和纬度species_id。表富有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;
另外适当的索引,有没有一大堆优化... – 2010-09-23 19:11:13
是species_id一个真正的FK,与它的索引和约束,或FK只是它的昵称? – Midhat 2010-09-23 19:13:00
我认为FK“昵称”更适合它的定义 – androidharry 2010-09-23 19:24:54