Bom dia galera, já começando o ano com uma pergunta de banco para começar bem o ano.
Estou querendo melhora o tempo de resposta dessa consulta, hoje o resultado leva em média 13 segundos para mostrar o resultado.
A tabela principal possui mais de 2.000.000, de registros.
O resultado é de apenas 34 linhas.
As tabelas possuem índices.
O capo r.date_gps também está indexados.
É consulta é para mostrar a última comunicação.
SELECT r.id,CONCAT(v.title,' ',v.plaque) AS title,v.type_vehicle,r.sn,r.lat,r.lng,r.direction,r.date_db,r.date_gps ,r.volt_main,r.speed,r.ign,r.sat_fix,r.sat FROM registers r JOIN trackers t ON t.cod = r.sn JOIN installations i ON t.id = i.trackers_id JOIN vehicles v ON v.id = i.vehicles_id JOIN clients c ON c.id = v.clients_id WHERE r.date_gps = ( SELECT MAX(rr.date_gps) FROM registers rr WHERE r.sn = rr.sn ) AND c.management_id = 1 GROUP BY r.sn ORDER BY r.date_gps DESC;