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 ?

Quel est le moyen le plus rapide de tronquer les horodatages à des intervalles de 5 minutes dans PostgreSQL ?

DDD
DDDoriginal
2024-12-26 12:14:10584parcourir

What's the Fastest Way to Truncate Timestamps to 5-Minute Intervals in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn