J'essaie de trouver une réponse à la question de savoir quel est le moyen le plus efficace d'obtenir le premier élément et le dernier élément dans un intervalle de temps donné. J'ai un tableau interval_data
(y compris les données iot) qui a une relation avec device
table. Je veux obtenir un résultat pour le premier et le dernier élément de chaque appareil.
Table de données d'intervalles :
id device_id created_at value
15269665 1000206 2018-07-21 00:10:00 5099.550000
15270533 1000206 2018-07-21 00:20:00 5099.610000
15271400 1000206 2018-07-21 00:30:00 5099.760000
15272269 1000206 2018-07-21 00:40:00 5099.850000
15273132 1000206 2018-07-21 00:50:00 5099.910000
15274040 1000206 2018-07-21 01:00:00 5099.970000
15274909 1000206 2018-07-21 01:10:00 5100.030000
15275761 1000206 2018-07-21 01:20:00 5100.110000
15276629 1000206 2018-07-21 01:30:00 5100.160000
15277527 1000206 2018-07-21 01:40:00 5100.340000
15278351 1000206 2018-07-21 01:50:00 5100.400000
15279219 1000206 2018-07-21 02:00:00 5100.450000
15280085 1000206 2018-07-21 02:10:00 5100.530000
15280954 1000206 2018-07-21 02:20:00 5100.590000
15281858 1000206 2018-07-21 02:30:00 5100.640000
15282724 1000206 2018-07-21 02:40:00 5100.750000
15283627 1000206 2018-07-21 02:50:00 5100.870000
15284495 1000206 2018-07-21 03:00:00 5100.930000
... ... ... ...
J'ai essayé des requêtes comme :
select created_at, value from interval_data i inner join
(select min(created_at) minin, max(created_at) maxin, d.device_id from device
d
inner join interval_data i on i.device_id = d.device_id
where d.device_id in (1000022, 1000023, 1000024)
and i.created_at between '2018-01-01 00:00:00' and '2019-01-01 00:00:00'
group by d.device_id) s
on s.device_id = i.device_id and (s.minin = i.created_at or s.maxin =
i.created_at)
Mais lorsque le nombre de dispositifs augmente, le temps de réponse prend beaucoup de temps. Avez-vous une suggestion à faire ? Comment puis-je trouver plus rapidement le premier et le dernier élément de chaque appareil ?