Bonjour,
j'ai la table suivante dans mysql:
Il s'agit d'une table qui enregistre les données de capteurs selon la date/identifiant capteur.
La clé primaire est date/id et un index est crée sur l'id, justement pour accélérer les recherches dessus.
Pour les id, la logique est:
id=50: température du capteur 50
id=7050: batterie du capteur 50
Les températures sont récupérées toutes les 5min et toutes les heures pour la batterie. Il y a une trentaine d'id en tout et la table comporte un peu moins de 6 millions de lignes (oui ça tourne depuis plusieurs années!)
J'ai besoin de récupérer la dernière valeur pour un id donné, je procède avec la requête SQL suivante (exemple pour 50):
SELECT DateTime,SensorID,Value FROM SENSORS WHERE SensorID=50 ORDER BY DateTime DESC LIMIT 1"
Et c'est là que ça devient bizarre:
Pour l'id 50, la requête a pris moins de 0.03s et presque 0.5s pour l'id 7050!
Le test est fait avec phpmyadmin mais le résiltat est le même depuis mon code PHP.
Ai-je un pb de design de table, de requête? Je pourrais créer une autre table pour ne stocker que les derniers enregistrements mais j'ai raté un truc?
Merci de votre aide,
Jean
Partager