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
Libérer: 2025-01-05 01:39:40
original
835 Les gens l'ont consulté

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
);
Copier après la connexion

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'));
Copier après la connexion

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());
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal