> 데이터 베이스 > MySQL 튜토리얼 > MySQL 및 PostgreSQL에서 각 메소드 및 ID에 대한 가장 최근 레코드를 효율적으로 검색하는 방법은 무엇입니까?

MySQL 및 PostgreSQL에서 각 메소드 및 ID에 대한 가장 최근 레코드를 효율적으로 검색하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-21 17:33:11
원래의
247명이 탐색했습니다.

How to Efficiently Retrieve the Most Recent Records for Each Method and ID in MySQL and PostgreSQL?

MySQL 테이블에서 가장 최근 레코드 검색

문제:

MySQL 테이블은 다양한 RPC에 대한 응답을 저장합니다. 타임스탬프, 메서드, ID 및 응답에 대한 필드를 사용하여 호출합니다. 목표는 모든 메소드 및 ID 조합에 대해 가장 최근 응답을 검색하는 것입니다.

가정:

  • 각 날짜에 대해 하나의 응답이 있을 수 있습니다. 주어진 메소드/ID.
  • 모든 호출 조합이 반드시 주어진 것은 아닙니다. 날짜.
  • 방법은 다양하며 ID는 수천 개, 날짜는 365개 이상입니다.

해결책:

다음 쿼리 MySQL 변수를 활용하여 원하는 결과를 효율적으로 검색하는 데 사용할 수 있습니다. JOIN:

SELECT * FROM (
    SELECT *, if(@last_method=method,0,1) as new_method_group, @last_method:=method 
    FROM rpc_responses 
    ORDER BY method, timestamp DESC
) as t1
WHERE new_method_group=1;
로그인 후 복사

이 쿼리는 먼저 각 행에 new_method_group 값을 할당합니다. 이는 새 메서드 그룹의 시작을 나타냅니다. 그런 다음 new_method_group 값이 1인 행만 포함하도록 결과를 필터링하여 각 메서드의 가장 최근 행만 최종 결과에 포함되도록 합니다.

PostgreSQL용 대체 솔루션:

PostgreSQL은 이 작업을 위한 내장 기능을 제공합니다.

SELECT DISTINCT ON (method) timestamp, method, id, response
FROM rpc_responses
WHERE 1 # some where clause here
ORDER BY method, timestamp DESC
로그인 후 복사

위 내용은 MySQL 및 PostgreSQL에서 각 메소드 및 ID에 대한 가장 최근 레코드를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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