집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 및 PostgreSQL에서 각 메소드 및 ID에 대한 가장 최근 레코드를 효율적으로 검색하는 방법은 무엇입니까?
문제:
MySQL 테이블은 다양한 RPC에 대한 응답을 저장합니다. 타임스탬프, 메서드, ID 및 응답에 대한 필드를 사용하여 호출합니다. 목표는 모든 메소드 및 ID 조합에 대해 가장 최근 응답을 검색하는 것입니다.
가정:
해결책:
다음 쿼리 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!