Effectuer cette requête d'heures de fonctionnement dans PostgreSQL
Dans PostgreSQL, vous pouvez utiliser le type de données tsrange pour représenter une plage d'horodatages sans heure zone. Cela peut être utilisé pour simplifier les requêtes sur les heures d'ouverture, qui peuvent se terminer vers la fin de la semaine.
Mise en page du tableau
Créez un nouveau tableau avec le schéma suivant :
CREATE TABLE hoo ( hoo_id serial PRIMARY KEY, shop_id int NOT NULL, hours tsrange NOT NULL );
La colonne des heures stockera les heures d'ouverture pour chacun shop.
Insertion de données
Vous pouvez insérer des données dans la table hoo à l'aide de la fonction f_hoo_hours(), qui prend deux horodatages et renvoie une valeur tsrange :
INSERT INTO hoo(shop_id, hours) VALUES (123, f_hoo_hours('2016-01-11 00:00+04', '2016-01-11 08:00+04'));
Interrogation de données
Vous pouvez interroger le hoo table pour trouver les magasins ouverts à une heure donnée à l'aide de la requête suivante :
SELECT * FROM hoo WHERE hours @> f_hoo_time(now());
Cette requête renverra tous les magasins ouverts à l'heure actuelle.
Indexation
Pour améliorer les performances de la requête, vous pouvez créer un index GiST ou SP-GiST sur les heures column:
CREATE INDEX hoo_hours_gist_idx ON hoo USING gist (hours);
Cet index permettra à PostgreSQL de retrouver rapidement les boutiques ouvertes à une heure donnée.
Conclusion
Utilisation de la tsrange et la fonction f_hoo_hours(), vous pouvez simplifier les requêtes pour les heures de fonctionnement dans PostgreSQL. En créant un index GiST ou SP-GiST sur la colonne des heures, vous pouvez encore améliorer les performances de ces requêtes.
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!