PostgreSQL での営業時間クエリの実行
PostgreSQL では、クエリを実行して、以下に基づいて「オープン」なすべてのレコードを検索できます。日付と時刻の比較を組み合わせて、指定された稼働時間を調べます。ただし、このアプローチは、特に時間が週末に重なる場合には複雑になる可能性があります。
tsrange タイプを使用した提案されたソリューション
このクエリを簡素化して最適化するには、次のようにします。営業時間を tsrange (タイムゾーンを含まないタイムスタンプの範囲) 値のセットとして保存するようにテーブルを再設計できます。これには PostgreSQL バージョン 9.2 以降が必要で、次の手順が必要です:
テーブル レイアウト:
データ例:
CREATE TABLE hoo ( hoo_id serial PRIMARY KEY , shop_id int NOT NULL , hours tsrange NOT NULL );
INSERT INTO hoo(shop_id, hours) VALUES (123, '[1996-01-03 18:30, 1996-01-04 05:00]');
除外制約:
ヘルパー関数:
最適化されたクエリ:
新しいテーブル構造とヘルパー関数を使用すると、クエリを次のように簡素化できます:
SELECT * FROM hoo WHERE hours @> f_hoo_time(now());
利点:
以上がPostgreSQL の「tsrange」型はどのようにして営業時間に合わせてクエリを最適化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。