Maison >base de données >tutoriel mysql >Quel est le moyen le plus rapide de tronquer les horodatages à des intervalles de 5 minutes dans PostgreSQL ?
Tronquer efficacement les horodatages aux limites de 5 minutes dans Postgres
La troncature des horodatages est essentielle pour l'analyse temporelle. Postgres propose la fonction date_trunc, nous permettant d'arrondir les horodatages à différentes unités. Cependant, pour tronquer à la limite de 5 minutes la plus proche, une approche plus spécifique est requise.
En général, la méthode simple suivante est utilisée :
date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
Cependant, lorsque les performances sont critiques, il est crucial d'explorer la solution la plus rapide possible.
Approche alternative : traverser une époque Time
Une approche alternative consiste à convertir l'horodatage en un horodatage d'époque, puis à le tronquer. Cette méthode s'exprime comme suit :
SELECT to_timestamp( floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min')) * EXTRACT(epoch FROM interval '5 min') ) FROM huge_table AS ht LIMIT 4000000
Benchmarking et résultats
Pour évaluer les performances des deux méthodes, un benchmark informel a été réalisé par rapport à une grande table de 4 millions rangées. Les requêtes ont été alternées pour éviter les avantages de la mise en cache.
Résultats :
Method | Run 1 | Run 3 | Run 5 |
---|---|---|---|
Epoch Time | 39.368 seconds | 39.526 seconds | 39.883 seconds |
Hour and Minute | 34.189 seconds | 37.028 seconds | 32.397 seconds |
Conclusion
Étonnamment, la méthode utilisant date_trunc et date_part ont systématiquement surpassé l'approche de l'époque. Bien qu'elle soit plus polyvalente et plus facile à paramétrer, la méthode epoch time sacrifie certaines performances pour une plage plus large de troncatures d'unités de temps.
Par conséquent, pour tronquer les horodatages à des limites de 5 minutes spécifiquement dans Postgres, la méthode simple utilisant date_trunc et date_part est l'approche recommandée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!