집 >데이터 베이스 >MySQL 튜토리얼 >큰 테이블의 각 그룹에 대한 열의 최대값을 효율적으로 찾으려면 어떻게 해야 합니까?
큰 테이블의 그룹화된 열에서 최대값 찾기
이 예에서는 비효율적인 다중 테이블 검색을 수행하지 않고 큰 테이블의 각 그룹에서 특정 열의 최대값을 갖는 행을 추출해야 합니다. 다음 형식을 고려하세요.
<code>SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3 2 2 1 10 2 2 12 3 1 6</code>
귀하의 목표는 각 고유 ID의 최신 라운드와 해당 점수를 검색하는 것입니다. 원하는 출력은 다음과 같습니다.
<code>ID ROUND SCORE 1 2 6 2 2 12 3 1 6</code>
창 기능을 활용한 효율적인 솔루션
효율적인 방법은 DISTINCT 키워드와 함께 창 기능을 사용하는 것입니다.
<code class="language-sql">SELECT DISTINCT id ,MAX(round) OVER (PARTITION BY id) AS round ,FIRST_VALUE(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;</code>
이 쿼리는 다음 주요 개념을 사용합니다.
이 최적화된 쿼리는 테이블을 여러 번 스캔할 필요 없이 각 고유 ID에 대한 최신 라운드와 점수를 효율적으로 반환하므로 대규모 테이블의 경우에도 효율성이 유지됩니다.
위 내용은 큰 테이블의 각 그룹에 대한 열의 최대값을 효율적으로 찾으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!