집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 시간 간격으로 행을 효율적으로 계산하는 방법은 무엇입니까?
시간 간격으로 행 계산: 최선의 접근 방식 공개
애플리케이션은 종종 타임 스탬프가 찍힌 이벤트를 처리하고 특정 시간을 기준으로 데이터를 분석해야 합니다. 간격. 각 간격 내의 이벤트 수를 효과적으로 계산하기 위해 개발자는 다양한 접근 방식을 고민할 수 있습니다.
1. 임의의 간격에 대한 동적 SQL 쿼리
SQL 쿼리를 사용하여 임의의 시간 간격으로 이벤트를 그룹화하는 것은 효율적이고 선호되는 방법입니다. 하지만 Postgres는 이 기능을 기본적으로 지원하지 않습니다.
2. 시간 정렬을 이용한 무차별 대입 방식
시작/종료 기간 내의 모든 기록을 쿼리하고 원하는 간격으로 수동으로 집계하는 것은 간단하지만 번거로운 접근 방식입니다. 타임스탬프별로 결과를 정렬해야 하며 동적 간격 사용자 정의가 부족합니다.
3. 간격 데이터 사전 저장
이벤트 테이블의 각 간격에 대해 별도의 필드를 유지 관리하면 런타임 계산을 방지하고 보고를 단순화할 수 있습니다. 그러나 이 방법은 테이블 크기를 두 배로 늘리므로 최적이 아닐 수 있습니다.
모범 사례
모범 사례는 애플리케이션의 특정 요구 사항과 데이터 크기에 따라 다릅니다.
date_bin() 함수가 포함된 Postgres 14
Postgres 14 이상 , date_bin() 함수를 사용하면 타임스탬프를 간격으로 직접 그룹화할 수 있습니다. 이렇게 하면 쿼리가 단순화되고 효율적인 결과가 제공됩니다.
예: 15분 간격으로 이벤트 계산
주어진 시간 범위 내에서 15분 간격으로 이벤트를 계산하려면 date_bin()을 사용하여 함수:
SELECT date_bin('15 min', e.ts, '2018-05-01') AS start_time , count(e.ts) AS events FROM event e GROUP BY 1 ORDER BY 1;
참고:
Postgres 13 이하의 경우 generate_series() 및 창 함수를 사용하는 대체 접근 방식을 사용할 수 있습니다.
위 내용은 SQL에서 시간 간격으로 행을 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!