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

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

DDD
发布: 2025-01-05 01:39:40
原创
793 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板