집 >데이터 베이스 >MySQL 튜토리얼 >조인 수를 줄여 쿼리 성능을 최적화하려면 어떻게 해야 합니까?
최적화된 쿼리 성능을 위한 조인 수 감소
데이터베이스 최적화에서는 쿼리 속도를 높이려면 조인 작업을 최소화하는 것이 중요합니다. 이 원칙은 각 조인이 단순히 쿼리 비용을 추가하는 것이 아니라 쿼리 비용을 곱한다는 것을 나타냅니다. 이 개념을 설명하기 위해 특정 문제를 자세히 살펴보고 더 적은 수의 조인을 사용하는 대체 솔루션을 탐색해 보겠습니다.
조인 결과 계산 쿼리
필요한 시나리오를 생각해 보세요. 세 개의 별도 조인으로 인한 행 수를 계산하려면:
일반적으로 간단한 접근 방식에는 각각 조인과 카운트를 수행하는 세 개의 하위 쿼리가 포함됩니다.
-- Subquery 1 SELECT COUNT(*) FROM album alb LEFT JOIN pays_album payalb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON" -- Subquery 2 SELECT COUNT(*) FROM album alb LEFT JOIN pers_album peralb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON" -- Subquery 3 SELECT COUNT(*) FROM album alb LEFT JOIN juron_album juralb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON"
그러나 동일한 결과를 얻는 것도 가능합니다. 단일 쿼리를 사용한 결과:
SELECT alb.titreAlb AS "Titre", COUNT(DISTINCT payalb.idAlb, payalb.PrimaryKeyFields) AS "Pays", COUNT(DISTINCT peralb.idAlb, peralb.PrimaryKeyFields) AS "Personnages", COUNT(DISTINCT juralb.idAlb, juralb.PrimaryKeyFields) AS "Jurons" FROM album alb LEFT JOIN pays_album payalb USING ( idAlb ) LEFT JOIN pers_album peralb USING ( idAlb ) LEFT JOIN juron_album juralb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON" GROUP BY alb.titreAlb
DISTINCT 키워드를 활용하면 추가 조인이 개수에 미치는 영향이 무효화됩니다. 이 접근 방식은 성능 이점이 최적의 인덱스 가용성에 달려 있지만 조인을 최소화하는 원래 개념을 효과적으로 모방합니다. 그럼에도 불구하고 이는 고려할 가치가 있는 실행 가능한 대안을 제공합니다.
위 내용은 조인 수를 줄여 쿼리 성능을 최적화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!