Maison >base de données >tutoriel mysql >Comment puis-je interroger efficacement les heures d'ouverture dans PostgreSQL à l'aide de « tsrange » ?

Comment puis-je interroger efficacement les heures d'ouverture dans PostgreSQL à l'aide de « tsrange » ?

DDD
DDDoriginal
2025-01-05 01:39:40868parcourir

How Can I Efficiently Query Hours of Operation in PostgreSQL Using `tsrange`?

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!

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