J'ai cette instruction SQL qui fonctionne mais prend beaucoup de temps à traiterPerformances SQL
J'ai une table a_log et une table de personnes. J'ai besoin de trouver la dernière activité et l'utilisateur associé pour chaque identifiant pour la personne donnée dans la table des personnes.
SELECT p.`id`, activity, appphone, appname, dateadd
FROM people p
LEFT JOIN a_log a
ON p.id = a.id
WHERE ( dateadd >= '2011/09/13 00:00' and dateadd <= '2011/09/13 23:59')
AND (a.date_time = (SELECT MAX(a1.date_time)
FROM activity_log a1
WHERE a.id = a1.id
GROUP BY id) OR date_time IS NULL)
ORDER BY `id` desc limit 0, 100
j'ai un index non unique sur date_time champ champ et id dans la table a_log J'ai un index primaire sur le champ identifiant et un index non unique sur le terrain dateadd chez les personnes Table
Comment puis-je obtenir un temps d'exécution plus court sur cette requête? Merci
Qu'est-ce que SGBDR utilisez-vous? – JohnFx
Quels SGBDR utilisez-vous et que montre le plan/journal d'exécution? – Mark
J'utilise mysql – user583576