고유 행 계산을 위한 조인 최적화
고유 행 계산을 위해 여러 조인을 수행하는 경우 불필요한 작업을 피하기 위해 쿼리를 최적화하는 것이 중요합니다. 심각한 성능 문제로 이어질 수 있는 한 가지 실수는 각 조인이 비용을 기하급수적으로 증가시키기 때문에 필요한 것보다 더 많은 테이블을 조인하는 것입니다.
모든 테이블을 함께 조인하는 대신 더 효율적인 접근 방식은 각각 다음을 포함하는 여러 하위 쿼리를 수행하는 것입니다. 단일 조인. 이를 통해 각 테이블의 개수를 분리하고 불필요한 곱셈을 피할 수 있습니다.
다음은 하위 쿼리를 사용하는 최적화된 쿼리의 예입니다.
SELECT Titre, (SELECT COUNT(DISTINCT idPays) FROM pays_album WHERE idAlb IN (SELECT idAlb FROM album WHERE titreAlb = "LES CIGARES DU PHARAON")) AS Pays, (SELECT COUNT(DISTINCT idPers) FROM pers_album WHERE idAlb IN (SELECT idAlb FROM album WHERE titreAlb = "LES CIGARES DU PHARAON")) AS Personnages, (SELECT COUNT(DISTINCT idJur) FROM juron_album WHERE idAlb IN (SELECT idAlb FROM album WHERE titreAlb = "LES CIGARES DU PHARAON")) AS Jurons FROM album WHERE titreAlb = "LES CIGARES DU PHARAON"
이 쿼리는 각 하위 쿼리가 필요한 항목만 조인하도록 합니다. 테이블을 줄여 전체 작업 비용을 줄입니다. 여러 하위 쿼리를 사용하면 모든 테이블을 하나로 합치지 않고도 여러 카운트를 효과적으로 수행할 수 있습니다.
테이블에 대한 고유 키가 있고 idAlb가 앨범의 고유 키라고 가정해 보겠습니다. 이 경우 DISTINCT와 함께 단일 조인을 사용하여 다음 쿼리로 행 수를 계산할 수도 있습니다.
SELECT alb.titreAlb AS Titre, COUNT(DISTINCT payalb.idAlb) AS Pays, COUNT(DISTINCT peralb.idAlb) AS Personnages, COUNT(DISTINCT juralb.idAlb) 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는 조인으로 인한 중복을 제거하여 고유한 행 수를 계산할 수 있도록 합니다. 행이 올바르게 표시됩니다. 그러나 이 방법에는 여전히 모든 테이블을 조인해야 하므로 항상 가장 효율적인 솔루션이 아닐 수도 있습니다.
조인 프로세스를 최적화하면 계산 비용을 최소화하고 특히 쿼리 성능을 향상시킬 수 있습니다. 대규모 데이터 세트. 가장 적절한 최적화 전략을 결정하려면 특정 데이터와 스키마를 평가하는 것을 잊지 마세요.
위 내용은 SQL에서 고유 행을 계산하기 위해 조인을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!