Bonjour,
J'ai une question bête, mais vu que ma base de donnée à plus d'une million de mesures (enfin pas pour toutes les stations) je me demande si ce point est relevant.
J'ai une API qui va extraire les données de ma base de donnée en fonction d'une station. Si la date est inconnue, l'API doit retourner la date du dernier enregistrement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
if($to == "0000-00-00 00:00:00"){
$sql_select = 'SELECT c.ttn_m_time FROM stations AS st
INNER JOIN sensors AS s ON st.id_station = s.stations_id_station
INNER JOIN measures AS m ON s.id_sensor = m.sensors_id_sensor
INNER JOIN collections AS c ON m.collections_id_collection = c.id_collection
WHERE st.id_station = '.$station.'
ORDER BY c.ttn_m_time DESC LIMIT 1';
$sql_result = $connect->query($sql_select);
while($row = $sql_result->fetch_assoc()){
foreach($row as $r => $rr){
$to = $rr; }
}
} |
Mon problème est que si je sélectionne des dates (from/to), la date de la dernière mesure prend la valeur à la la date TO, alors que j'aimerais qu'elle garde la valeur de la date dernière mesure enregistrée. J'ai besoin de cette date pour sélectionner les dates sélectionnables demanière à ce qu'elles ne dépassent pas la date de la dernière mesure enregistrée.
Je pourrais donc supprimer la condition
if($to == "0000-00-00 00:00:00")
pour que ce code soit toujours exécuté même si plus bas, je le réexécute mais sans le LIMIT 1 et avec d'autres critères pour élargir les données que je dois recevoir.
On est d'accord que le script ci-dessus, prend très peu de ressource? C'est à dire, il met un tout petit temps à retourner la date?
On est d'accord que vu que j'ai ceci
ORDER BY c.ttn_m_time DESC LIMIT 1';
, il va "s'arrêter" dès qu'il li la première ligne?
Partager