ホームページ >データベース >mysql チュートリアル >「tsrange」を使用して PostgreSQL の稼働時間を効率的にクエリするにはどうすればよいですか?
この操作時間のクエリを 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 サイトの他の関連記事を参照してください。