문제
다음 SQL 실행 시 발생할 수 있는 문제점으로 가장 적절한 것은?
SQLSELECT c.customer_name, o.order_date, p.product_name FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id LEFT JOIN order_items oi ON o.order_id = oi.order_id LEFT JOIN products p ON oi.product_id = p.product_id WHERE p.category_code = 'ELEC' AND o.order_date >= '2024-01-01';
① 다중 LEFT JOIN으로 인한 카티시안 곱 발생으로 성능 저하 ② WHERE 절의 조건으로 인해 LEFT JOIN이 INNER JOIN으로 변질되어 의도와 다른 결과 반환 ③ JOIN 순서가 잘못되어 참조 무결성 오류 발생 ④ 서브쿼리를 사용하지 않아 중복 데이터 발생
정답
2번
해설
LEFT JOIN을 사용했지만 WHERE 절에서 p.category_code = 'ELEC'와 o.order_date >= '2024-01-01' 조건을 사용하면, 해당 조건을 만족하지 않는 행들이 필터링됩니다. 이는 LEFT JOIN의 의도(모든 고객을 포함)와 달리 실제로는 INNER JOIN처럼 동작하게 만듭니다. 조건은 ON 절에 포함하거나 WHERE 절에서 IS NULL 처리를 해야 합니다.