J'ai une base de données mysql avec des enregistrements de véhicules. J'ai besoin d'une requête rapide qui retourne les enregistrements les plus récents de ces enregistrements qui ont été mis à jour au cours des 4 dernières minutes. Par exemple, le véhicule "A" peut être mis à jour plusieurs fois par minute de sorte qu'il apparaîtra de nombreuses fois au cours des 4 dernières minutes. Même avec le véhicule B C etc. Je n'ai besoin que des entrées les plus récentes pour chaque véhicule dans une fenêtre de 4 min. J'ai essayé comme ceciObtenir le nouvel enregistrement à partir d'une base de données Plusieurs requêtes
SELECT *
FROM yourtable AS a
WHERE a.ts =
(SELECT MAX(ts)
FROM yourtable AS b
WHERE b.ts > NOW() - INTERVAL 5 MINUTE
AND b.name = a.name)
mais cela prend trop de temps pour produire des résultats> 10 secondes.
Je suis confus - si un enregistrement est mis à jour, pourquoi la table contient plusieurs enregistrements, plutôt que le seul enregistrement? En outre, il serait utile de voir la définition CREATE TABLE de votre table, et quelques exemples de données, pour aider à répondre à la question. – Kenny
En fait, la table n'est pas mise à jour mais de nouveaux enregistrements y sont insérés comme s'il s'agissait d'un journal de position de véhicule –