SQL 쿼리 최적화: 최대값 및 관련 데이터 검색
다른 열의 관련 데이터와 함께 최대값을 효율적으로 추출하는 것은 빈번한 SQL 작업입니다. 대규모 데이터 세트의 경우 중첩 선택이나 간단한 GROUP BY
쿼리와 같은 표준 방법은 비효율적일 수 있습니다.
ID
, tag
, version
열이 있는 테이블을 생각해 보세요. 목표는 각 고유 version
에 대해 최대 ID
를 찾고 해당 tag
을 검색하는 것입니다.
ROW_NUMBER()
창 기능을 활용하는 매우 효율적인 솔루션:
행 순위 지정: 하위 쿼리는 version
열로 분할된 ID
열(내림차순)을 기준으로 각 행에 순위를 할당합니다.
<code class="language-sql">SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.id ORDER BY t.version DESC) AS rnk FROM YourTable t</code>
최대 버전 필터링: 외부 쿼리는 순위(rnk
)가 1인 행만 선택합니다. 이는 각 version
에 대해 ID
이 가장 높은 행을 격리합니다.
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.id ORDER BY t.version DESC) AS rnk FROM YourTable t ) s WHERE s.rnk = 1</code>
이 방법은 중첩된 선택과 비용이 많이 드는 GROUP BY
작업을 방지하여 정확성을 유지하면서 대규모 데이터세트의 속도를 훨씬 더 빠르게 만듭니다. 이러한 시나리오에서 최적의 성능을 얻기 위해 선호되는 접근 방식입니다.
위 내용은 SQL에서 최대값과 관련 데이터를 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!