>데이터 베이스 >MySQL 튜토리얼 >`tsrange`를 사용하여 PostgreSQL에서 작업 시간을 효율적으로 쿼리하려면 어떻게 해야 합니까?

`tsrange`를 사용하여 PostgreSQL에서 작업 시간을 효율적으로 쿼리하려면 어떻게 해야 합니까?

DDD
DDD원래의
2025-01-05 01:39:40806검색

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.

데이터 삽입

두 개의 타임스탬프를 사용하고 tsrange 값을 반환하는 f_hoo_hours() 함수를 사용하여 hoo 테이블에 데이터를 삽입할 수 있습니다.

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으로 문의하세요.