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 );
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'));
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());
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);
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!