그룹당 최고/최소 값의 레코드 가져오기
문제:
레코드 검색 각 필드 내에서 지정된 필드에 대해 가장 높은 값 또는 가장 작은 값을 사용합니다. group.
이전 제안 솔루션:
하위 쿼리가 포함된 복잡한 쿼리에서 순위(@rank := @rank 1) 사용
대체 솔루션:
보다 효율적인 접근 방식은 왼쪽을 활용하는 것입니다. 순위 변수가 없는 외부 조인:
SELECT t1.* FROM `Table` AS t1 LEFT OUTER JOIN `Table` AS t2 ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField WHERE t2.GroupId IS NULL ORDER BY t1.OrderField;
이 쿼리는 (GroupId, OrderField)에 대한 인덱싱 전략을 활용하여 t2에 대한 액세스를 최적화하여 원하는 결과를 얻습니다.
최적화 고려 사항:
AND (t1.OrderField < t2.OrderField OR (t1.OrderField = t2.OrderField AND t1.Id < t2.Id))
왼쪽 외부 조인 접근 방식의 장점:
위 내용은 SQL에서 그룹당 최고 또는 최저 값을 가진 레코드를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!