집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 최대값과 해당 데이터를 효율적으로 검색하려면 어떻게 해야 합니까?
SQL 쿼리 최적화: 최대값 및 관련 데이터 검색
이 문서에서는 대규모 SQL 테이블에서 각 ID 및 해당 태그의 최대 버전 번호를 검색하는 효율적인 방법을 보여줍니다. 중첩 쿼리나 단순 그룹화와 같이 효율성이 떨어지는 방법은 피하세요.
최적의 솔루션은 ROW_NUMBER()
기능을 사용합니다:
<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>
이 쿼리의 작동 방식은 다음과 같습니다.
t.*
의 모든 열(YourTable
)을 선택합니다(YourTable
를 실제 테이블 이름으로 바꿉니다). 결정적으로 각 rnk
파티션 내의 각 행에 id
기준으로 내림차순으로 순위(version
)를 할당합니다. 각 version
의 가장 높은 id
은 1위를 받습니다.rnk = 1
인 행만 선택하여 내부 쿼리 결과를 필터링합니다. 이는 각 고유 version
에 대해 최대 id
및 관련 tag
및 id
을 효율적으로 분리합니다.ROW_NUMBER()
을 사용하면 특히 대규모 데이터 세트의 경우 대체 접근 방식에 비해 성능이 크게 향상됩니다. 중첩된 쿼리 또는 집계 함수가 있는 GROUP BY
절의 성능 오버헤드를 방지하므로 이 시나리오에서 효율적인 데이터 검색을 위해 선호되는 방법입니다.
위 내용은 SQL에서 최대값과 해당 데이터를 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!