Web/94. DataBase: 1개의 글

[DataBase] ON 절과 WHERE 절을 사용하는 조인의 차이

Posted by nkjok
2025. 1. 23. 18:00 Web/94. DataBase
반응형

ON 절과 WHERE 절을 사용한 조인의 차이에 대해 설명드릴게요. 정확한 결과를 가져오려면 ON 절에서 필터를 사용하는 것이 더 적절한 경우가 있습니다. 이 차이를 이해하기 위해 예제를 사용해 자세히 설명해 보겠습니다.

ON 절과 WHERE 절을 사용하는 조인의 차이

ON 절에서의 필터링

ON 절은 조인 조건을 지정하는 곳입니다. 테이블을 조인할 때 조건을 걸어 필터링을 수행합니다. 조인할 때마다 조건에 맞는 행만 결과 집합에 포함됩니다.

WHERE 절에서의 필터링

WHERE 절은 조인이 끝난 후 결과 집합에서 조건을 걸어 필터링을 수행합니다. 조인된 결과에서 조건에 맞는 행만 최종 결과 집합에 포함됩니다.

예제

데이터 준비

테이블 employees와 departments가 있다고 가정해보겠습니다.

ON 절을 사용하는 조인

ON 절을 사용하여 필터링하면 조인 조건이 먼저 적용됩니다. 예를 들어, dept_id = 10인 부서만 조인하려면:

SELECT e.emp_name, d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id AND d.dept_id = 10;

결과:

emp_namedept_name
Alice HR

 

WHERE 절을 사용하는 조인

WHERE 절을 사용하여 필터링하면 조인이 모두 이루어진 후 조건이 적용됩니다. 예를 들어, dept_id = 10인 부서만 결과에 포함하려면:

SELECT e.emp_name, d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id
WHERE d.dept_id = 10;

결과는 ON 절을 사용한 경우와 동일합니다:

emp_namedept_name
Alice HR

 

차이점 및 주의사항

  1. 조인된 행의 수: ON 절에서 필터링하는 경우, 조인 조건이 먼저 적용되므로 조건에 맞는 행만 조인됩니다. WHERE 절에서 필터링하는 경우, 모든 조인된 결과에서 조건을 적용하므로 더 많은 행이 처리될 수 있습니다.
  2. 성능 최적화: 조인 조건이 복잡한 경우, ON 절에서 필터링하면 성능이 더 좋을 수 있습니다. 이유는 조인할 때 조건이 적용되어 불필요한 조인을 방지할 수 있기 때문입니다.

요약하면, 정확한 결과를 얻으려면 ON 절을 사용하여 필터링하는 것이 좋습니다. 이를 통해 조인 조건이 먼저 적용되고, 결과 집합이 필터링됩니다.

반응형