집 >데이터 베이스 >MySQL 튜토리얼 >`tsrange`를 사용하여 PostgreSQL에서 작업 시간을 효율적으로 쿼리하려면 어떻게 해야 합니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!