首页 >数据库 >mysql教程 >如何使用'tsrange”高效查询 PostgreSQL 的运行时间?

如何使用'tsrange”高效查询 PostgreSQL 的运行时间?

DDD
DDD原创
2025-01-05 01:39:40847浏览

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 表中,该函数采用两个时间戳并返回 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn