JOIN 연산의 ON 절과 WHERE 절
INNER JOIN 연산을 사용할 때 ON 절과 WHERE 절을 모두 사용할 수 있습니다. 데이터를 필터링합니다. 경우에 따라 서로 바꿔 쓸 수 있는 것처럼 보일 수도 있지만 주의가 필요한 미묘한 차이가 있습니다.
ON 절
ON 절은 충족해야 하는 특정 조건을 지정하는 데 사용됩니다. 조인 결과에 행이 포함될 수 있습니다. 조인 수준에서 데이터를 필터링하여 지정된 조건을 만족하는 두 테이블의 행만 결합되도록 합니다.
WHERE 절
WHERE 절을 사용하여 필터링합니다. 조인 작업이 발생한 후의 행입니다. 결합된 데이터 세트에 조건을 적용하여 결과를 더욱 구체화합니다.
성능 고려 사항
일반적으로 ON 절을 사용하든 WHERE 절을 사용하든 큰 성능 차이는 없습니다. INNER JOIN 작업에서 데이터를 필터링하는 데 사용됩니다. 그러나 예외도 있습니다.
외부 조인
LEFT OUTER JOIN과 같은 외부 조인을 사용하는 경우 필터 조건의 위치에 따라 결과에 영향을 줄 수 있습니다. ON 절에 필터를 적용하면 조건을 충족하지 않는 오른쪽 테이블(LEFT OUTER JOIN의 경우)에서 행이 제외됩니다. 반면에 WHERE 절에 필터를 적용하면 조인 후 결합된 데이터세트의 행이 필터링되어 잠재적으로 더 많은 행이 반환됩니다.
예:
다음을 고려하세요. 다음 예:
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) AND (b.IsApproved = 1);
이 경우 필터와 함께 ON 절을 사용합니다(b.IsApproved = 1) IsApproved가 1로 설정되지 않은 Bar의 모든 행을 제외합니다.
또는
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) WHERE (b.IsApproved = 1);
이것은 먼저 조인 작업을 수행한 다음 IsApproved를 기반으로 결과 집합을 필터링합니다. 조건, IsApproved가 NULL인 Bar에서 행을 반환할 가능성이 있습니다.
기타 고려 사항
위 내용은 JOIN의 ON 대 WHERE 절: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!