> 데이터 베이스 > MySQL 튜토리얼 > JOIN의 ON 대 WHERE 절: 언제 어느 것을 사용해야 합니까?

JOIN의 ON 대 WHERE 절: 언제 어느 것을 사용해야 합니까?

Mary-Kate Olsen
풀어 주다: 2025-01-05 00:02:40
원래의
991명이 탐색했습니다.

ON vs. WHERE Clause in JOINs: When Should I Use Which?

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에서 행을 반환할 가능성이 있습니다.

기타 고려 사항

  • 간단한 내부 조인의 경우 일반적으로 ON 절을 사용하는 것이 WHERE 절이 복잡해지는 것을 방지하므로 선호됩니다.
  • 여러 조인이나 하위 쿼리가 포함된 복잡한 조건은 다음과 같습니다. WHERE 절에서 관리하기가 더 쉽습니다.
  • 최적의 접근 방식을 선택할 때 인덱스 사용을 고려해야 합니다. ON 절의 필터는 조인 열의 인덱스를 활용할 수 있는 반면, WHERE 절의 필터는 테이블 스캔이 필요할 수 있습니다.

위 내용은 JOIN의 ON 대 WHERE 절: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿