ホームページ > データベース > mysql チュートリアル > 「tsrange」を使用して PostgreSQL の稼働時間を効率的にクエリするにはどうすればよいですか?

「tsrange」を使用して PostgreSQL の稼働時間を効率的にクエリするにはどうすればよいですか?

DDD
リリース: 2025-01-05 01:39:40
オリジナル
845 人が閲覧しました

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

この操作時間のクエリを PostgreSQL で実行する

PostgreSQL では、tsrange データ型を使用して、時刻を含まないタイムスタンプの範囲を表すことができますゾーン。これは、週末に重なる可能性がある営業時間中のクエリを簡素化するために使用できます。

テーブル レイアウト

次のスキーマで新しいテーブルを作成します。 :

CREATE TABLE hoo (
  hoo_id  serial PRIMARY KEY,
  shop_id int NOT NULL,
  hours   tsrange NOT NULL
);
ログイン後にコピー

時間列には、それぞれの営業時間が保存されます。 shop.

データの挿入

f_hoo_hours() 関数を使用して hoo テーブルにデータを挿入できます。この関数は 2 つのタイムスタンプを受け取り、tsrange 値を返します。

INSERT INTO hoo(shop_id, hours)
VALUES (123, f_hoo_hours('2016-01-11 00:00+04', '2016-01-11 08:00+04'));
ログイン後にコピー

クエリデータ

次のクエリを使用して、hoo テーブルをクエリして、特定の時間に営業している店舗を見つけることができます。

SELECT *
FROM hoo
WHERE hours @> f_hoo_time(now());
ログイン後にコピー

このクエリは、営業しているすべての店舗を返します。現時点ではオープンしています。

インデックス作成

改善のためクエリのパフォーマンスを考慮して、時間列に GiST または SP-GiST インデックスを作成できます。

CREATE INDEX hoo_hours_gist_idx ON hoo USING gist (hours);
ログイン後にコピー

このインデックスにより、PostgreSQL は指定された時間に営業している店舗をすばやく見つけることができます。

結論

tsrange データ型とf_hoo_hours() 関数を使用すると、PostgreSQL での数時間の運用に対するクエリを簡素化できます。時間列に GiST または SP-GiST インデックスを作成すると、これらのクエリのパフォーマンスをさらに向上させることができます。

以上が「tsrange」を使用して PostgreSQL の稼働時間を効率的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート