다음 두 쿼리의 결과 차이점을 올바르게 설명한 것은?
다음 두 쿼리의 결과 차이점을 올바르게 설명한 것은?
-- 쿼리 A
SELECT SupplierName
FROM Suppliers
WHERE SupplierID IN (SELECT SupplierID FROM Products WHERE Price < 20);
-- 쿼리 B
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT 1 FROM Products
WHERE Products.SupplierID = Suppliers.SupplierID AND Price < 20);
정답: C
⦁ 기본적으로는 같은 결과: 두 쿼리 모두 가격이 20 미만인 상품을 가진 공급업체를 조회합니다
⦁ NULL 값 처리의 차이:
⦁ IN 연산자: 서브쿼리 결과에 NULL이 있으면 예상과 다른 결과가 나올 수 있습니다
⦁ EXISTS: NULL 값 영향을 받지 않고 단순히 레코드 존재 여부만 확인합니다
⦁ 성능 차이:
⦁ EXISTS는 조건에 맞는 첫 번째 레코드를 찾으면 즉시 TRUE 반환 (Short-circuit)
⦁ IN은 서브쿼리의 모든 결과를 생성한 후 비교합니다
⦁ 이 예제에서는: SupplierID가 PRIMARY KEY라면 NULL이 없어 결과가 동일합니다
💡 학습 팁
이 문제를 포함한 MySQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.