> 데이터 베이스 > MySQL 튜토리얼 > PostgreSQL에서 타임스탬프를 5분 간격으로 자르는 가장 빠른 방법은 무엇입니까?

PostgreSQL에서 타임스탬프를 5분 간격으로 자르는 가장 빠른 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-26 12:14:10
원래의
575명이 탐색했습니다.

What's the Fastest Way to Truncate Timestamps to 5-Minute Intervals in PostgreSQL?

Postgres에서 효율적으로 타임스탬프를 5분 경계로 자르기

타임스탬프 자르기는 시간 분석에 필수적입니다. Postgres는 date_trunc 기능을 제공하여 타임스탬프를 다양한 단위로 반올림할 수 있습니다. 그러나 가장 가까운 5분 경계로 자르려면 보다 구체적인 접근 방식이 필요합니다.

일반적으로 다음과 같은 간단한 방법이 사용됩니다.

date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
로그인 후 복사

그러나 성능이 중요한 경우에는 가능한 가장 빠른 솔루션을 모색하는 것이 중요합니다.

대체 접근 방식: 시대를 통과 시간

대체 접근 방식은 타임스탬프를 에포크 타임스탬프로 변환한 다음 자르는 것입니다. 이 방법은 다음과 같이 표현됩니다.

SELECT to_timestamp(
    floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min'))
    * EXTRACT(epoch FROM interval '5 min')
) FROM huge_table AS ht LIMIT 4000000
로그인 후 복사

벤치마킹 및 결과

두 방법의 성능을 평가하기 위해 4백만 개의 큰 테이블을 대상으로 비공식 벤치마크를 수행했습니다. 행. 캐싱 이점을 방지하기 위해 쿼리를 번갈아 수행했습니다.

결과:

Method Run 1 Run 3 Run 5
Epoch Time 39.368 seconds 39.526 seconds 39.883 seconds
Hour and Minute 34.189 seconds 37.028 seconds 32.397 seconds

결론

놀랍게도 date_trunc 및 date_part는 지속적으로 에포크 시간 접근 방식보다 성능이 뛰어났습니다. 더 다양하고 매개변수화하기가 더 쉬움에도 불구하고 에포크 시간 방법은 더 넓은 범위의 시간 단위 잘림에 대해 일부 성능을 희생합니다.

따라서 특히 Postgres에서 타임스탬프를 5분 경계로 자르려면 date_trunc를 사용하는 간단한 방법이 필요합니다. date_part가 권장되는 접근 방식입니다.

위 내용은 PostgreSQL에서 타임스탬프를 5분 간격으로 자르는 가장 빠른 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿