집 >데이터 베이스 >MySQL 튜토리얼 >대규모 데이터베이스 테이블에서 그룹당 하나의 행을 효율적으로 선택하는 방법은 무엇입니까?
각 그룹에서 하나의 행을 효율적으로 선택
수백만 개의 레코드가 포함된 대규모 제품 테이블에서는 쿼리 최적화가 성능에 매우 중요합니다. 일반적인 시나리오는 각 매장의 최대 ID와 같은 특정 열을 기반으로 테이블의 각 그룹에서 단일 행을 검색하는 것입니다.
원래 쿼리 및 성능 문제:
이 작업에 사용된 초기 쿼리는 다음과 같습니다.
SELECT id, product_name, store_id FROM product GROUP BY store_id ORDER BY id.
그러나 이 쿼리는 그룹화로 인해 성능 문제에 직면했습니다. 및 집계 작업이 포함됩니다.
권장 접근 방식:
효율적인 솔루션은 하위 쿼리를 사용하여 각 매장의 최대 ID를 결정하고 이를 기본 테이블에 조인하는 것입니다.
SELECT a.* FROM tableName a INNER JOIN ( SELECT store_ID, MAX(ID) max_ID FROM tableName GROUP BY store_ID ) b ON a.store_ID = b.store_ID AND a.ID = b.max_ID
이 쿼리는 하위 쿼리에서 그룹화 및 집계를 수행하므로 더 나은 결과를 얻을 수 있습니다. 성능.
추가 성능 팁:
다중 행 선택:
각 그룹에서 여러 행을 검색해야 하는 경우 다음 쿼리를 사용할 수 있습니다.
SELECT ID, product_Name, store_ID FROM tableName a WHERE ( SELECT COUNT(*) FROM tableName b WHERE b.store_ID = a.store_ID AND b.ID >= a.ID ) <= 2;
이 쿼리는 ID 열을 기준으로 각 그룹에서 최대 2개의 행을 검색합니다.
위 내용은 대규모 데이터베이스 테이블에서 그룹당 하나의 행을 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!