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
Libérer: 2024-12-26 12:14:10
original
689 Les gens l'ont consulté

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'
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal