문제
다음 두 SQL의 실행 결과와 성능 특성에 대한 설명으로 가장 적절한 것은?
SQL-- SQL A SELECT emp_id, name FROM employees EXCEPT SELECT emp_id, name FROM terminated_employees; -- SQL B SELECT emp_id, name FROM employees WHERE (emp_id, name) NOT IN ( SELECT emp_id, name FROM terminated_employees WHERE emp_id IS NOT NULL AND name IS NOT NULL );
① SQL A와 SQL B는 항상 동일한 결과를 반환하며, 성능도 동일하다 ② SQL A는 중복 제거 정렬이 발생하고, SQL B는 중복을 유지하며 NULL 처리에 주의해야 한다 ③ SQL A는 해시 조인을 사용하고, SQL B는 중첩 루프 조인을 사용한다 ④ SQL A는 첫 번째 집합에서 중복을 먼저 제거한 후 차집합 연산을 수행한다
정답
2번
해설
EXCEPT는 표준 SQL의 차집합 연산으로 중복을 자동으로 제거하며 정렬이 발생합니다. NOT IN을 사용한 SQL B는 원본 데이터의 중복을 그대로 유지하며, NULL 값이 있을 경우 예상과 다른 결과가 나올 수 있어 WHERE 절에서 NULL 체크가 필요합니다. 두 SQL은 서로 다른 접근 방식으로 차집합을 구현하며 성능과 결과가 다를 수 있습니다.