首頁 > 資料庫 > mysql教程 > 如何使用「tsrange」高效查詢 PostgreSQL 的運行時間?

如何使用「tsrange」高效查詢 PostgreSQL 的運行時間?

DDD
發布: 2025-01-05 01:39:40
原創
835 人瀏覽過

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
);
登入後複製

營業時間列將儲存每個營業時間>

插入資料

您可以使用f_hoo_hours() 函數將資料插入hoo 表中,函數採用兩個時間戳記並傳回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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板