Maison >base de données >tutoriel mysql >Comment le type « tsrange » de PostgreSQL peut-il optimiser les requêtes pendant les heures de bureau ?
Exécution d'une requête sur les heures d'ouverture dans PostgreSQL
Dans PostgreSQL, vous pouvez effectuer une requête pour trouver tous les enregistrements « ouverts » en fonction de heures de fonctionnement spécifiées à l’aide d’une combinaison de comparaisons de date et d’heure. Cependant, cette approche peut devenir complexe, surtout si les heures se terminent vers la fin de la semaine.
Solution proposée utilisant le type tsrange
Pour simplifier et optimiser cette requête, vous pouvez reconcevoir le tableau pour stocker les heures d'ouverture sous la forme d'un ensemble de valeurs tsrange (plage d'horodatage sans fuseau horaire). Cela nécessite PostgreSQL version 9.2 ou ultérieure et implique les étapes suivantes :
Mise en page de la table :
Exemple Données :
CREATE TABLE hoo ( hoo_id serial PRIMARY KEY , shop_id int NOT NULL , hours tsrange NOT NULL );
INSERT INTO hoo(shop_id, hours) VALUES (123, '[1996-01-03 18:30, 1996-01-04 05:00]');
Contrainte d'exclusion :
Fonctions d'assistance :
Requête optimisée :
Grâce à la nouvelle structure de table et aux fonctions d'assistance, vous pouvez simplifier votre requête pour :
SELECT * FROM hoo WHERE hours @> f_hoo_time(now());
Avantages :
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!