Maison >base de données >tutoriel mysql >Comment le « tsrange » de PostgreSQL peut-il simplifier et optimiser les requêtes d'heures de fonctionnement ?

Comment le « tsrange » de PostgreSQL peut-il simplifier et optimiser les requêtes d'heures de fonctionnement ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 08:44:38254parcourir

How Can PostgreSQL's `tsrange` Simplify and Optimize Hours of Operation Queries?

Comment effectuer des requêtes d'heures de fonctionnement dans PostgreSQL

Complexité des requêtes d'origine

L'original La requête, destinée à identifier les enregistrements « ouverts » (dans les heures d'ouverture spécifiées), était complexe en raison de la nécessité de gérer divers scénarios où les heures d’ouverture pourraient se terminer vers la fin de la semaine. Pour simplifier ce processus, nous adopterons une approche différente en utilisant une structure de données appelée tsrange.

Présentation de tsrange

tsrange est un type de données dans PostgreSQL qui représente une plage d'horodatages sans fuseau horaire. Il fournit un moyen pratique de stocker et de manipuler des intervalles de temps.

Refonte de la structure de la table

Nous remplacerons les colonnes existantes (opens_on, closes_on, opens_at, closes_at ) avec une seule colonne appelée heures de type tsrange. Les heures de fonctionnement seront stockées sous la forme d'un ensemble de valeurs tsrange.

Exemple

Par exemple, la valeur tsrange suivante représente les heures de fonctionnement du mercredi, 18 h 00 au jeudi. , 5 heures du matin :

'[1996-01-03 18:30, 1996-01-04 05:00]'

Requête à l'aide de tsrange

Avec la structure de table mise à jour, la requête devient beaucoup plus simple :

SELECT *
FROM hoo
WHERE hours @> f_hoo_time(now())

La fonction f_hoo_time() convertit un horodatage avec fuseau horaire en horodatage, tandis que l'opérateur de confinement (@>) vérifie si l'heure actuelle se situe dans la plage horaire spécifiée.

Index et Performance

Pour optimiser les requêtes à l'aide de tsrange, nous vous recommandons de créer un index SP-GiST sur la colonne des heures. Cet index permet une recherche efficace des plages de temps, ce qui entraîne des performances de requête plus rapides.

Conclusion

En tirant parti de tsrange et d'un index SP-GiST, nous pouvons grandement simplifier le interroger les heures de fonctionnement et améliorer ses performances. Cette approche est plus efficace et robuste que la requête d'origine.

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