Heim > Datenbank > MySQL-Tutorial > Wie kann ich mit „tsrange' Betriebsstunden in PostgreSQL effizient abfragen?

Wie kann ich mit „tsrange' Betriebsstunden in PostgreSQL effizient abfragen?

DDD
Freigeben: 2025-01-05 01:39:40
Original
835 Leute haben es durchsucht

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

Führen Sie diese Betriebsstundenabfrage in PostgreSQL aus

In PostgreSQL können Sie den Datentyp tsrange verwenden, um einen Bereich von Zeitstempeln ohne Zeit darzustellen Zone. Dies kann verwendet werden, um Abfragen nach Betriebsstunden zu vereinfachen, die möglicherweise gegen Ende der Woche stattfinden.

Tabellenlayout

Erstellen Sie eine neue Tabelle mit dem folgenden Schema :

CREATE TABLE hoo (
  hoo_id  serial PRIMARY KEY,
  shop_id int NOT NULL,
  hours   tsrange NOT NULL
);
Nach dem Login kopieren

In der Spalte „Stunden“ werden jeweils die Betriebsstunden gespeichert shop.

Daten einfügen

Sie können Daten in die Hoo-Tabelle einfügen, indem Sie die Funktion f_hoo_hours() verwenden, die zwei Zeitstempel benötigt und einen tsrange-Wert zurückgibt:

INSERT INTO hoo(shop_id, hours)
VALUES (123, f_hoo_hours('2016-01-11 00:00+04', '2016-01-11 08:00+04'));
Nach dem Login kopieren

Daten abfragen

Sie können Abfragen durchführen Verwenden Sie die Hoo-Tabelle, um mithilfe der folgenden Abfrage die Geschäfte zu finden, die zu einem bestimmten Zeitpunkt geöffnet sind:

SELECT *
FROM hoo
WHERE hours @> f_hoo_time(now());
Nach dem Login kopieren

Diese Abfrage gibt alle Geschäfte zurück, die zum aktuellen Zeitpunkt geöffnet sind.

Indizierung

Um die Leistung der Abfrage zu verbessern, können Sie einen GiST- oder SP-GiST-Index für die Stunden erstellen Spalte:

CREATE INDEX hoo_hours_gist_idx ON hoo USING gist (hours);
Nach dem Login kopieren

Mit diesem Index kann PostgreSQL schnell die Geschäfte finden, die zu einem bestimmten Zeitpunkt geöffnet sind.

Fazit

Mit dem Mit dem Datentyp tsrange und der Funktion f_hoo_hours() können Sie Abfragen nach Betriebsstunden in PostgreSQL vereinfachen. Durch die Erstellung eines GiST- oder SP-GiST-Index für die Stundenspalte können Sie die Leistung dieser Abfragen weiter verbessern.

Das obige ist der detaillierte Inhalt vonWie kann ich mit „tsrange' Betriebsstunden in PostgreSQL effizient abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage