집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL의 `tsrange` 유형이 업무 시간에 대한 쿼리를 어떻게 최적화할 수 있습니까?
PostgreSQL에서 작업 시간 쿼리 수행
PostgreSQL에서는 다음을 기반으로 "열린" 모든 레코드를 찾는 쿼리를 수행할 수 있습니다. 날짜와 시간 비교를 조합하여 특정 운영 시간을 표시합니다. 그러나 이 접근 방식은 특히 업무 시간이 주말에 끝나는 경우 복잡해질 수 있습니다.
tsrange Type을 사용하여 제안된 솔루션
이 쿼리를 단순화하고 최적화하려면, 영업시간을 tsrange(시간대가 없는 타임스탬프 범위) 값 집합으로 저장하도록 테이블을 다시 디자인할 수 있습니다. 이를 위해서는 PostgreSQL 버전 9.2 이상이 필요하며 다음 단계가 필요합니다.
테이블 레이아웃:
예 데이터:
CREATE TABLE hoo ( hoo_id serial PRIMARY KEY , shop_id int NOT NULL , hours tsrange NOT NULL );
INSERT INTO hoo(shop_id, hours) VALUES (123, '[1996-01-03 18:30, 1996-01-04 05:00]');
제외 제약 조건:
도우미 기능:
최적화된 쿼리:
새로운 테이블 구조와 도우미 함수를 사용하면 쿼리를 단순화할 수 있습니다 대상:
SELECT * FROM hoo WHERE hours @> f_hoo_time(now());
이점:
위 내용은 PostgreSQL의 `tsrange` 유형이 업무 시간에 대한 쿼리를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!