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 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!