SQL - 문제 미리보기

문제 1690

medium
다음 두 쿼리 중 더 효율적인 것은?

쿼리 A:
```sql
SELECT DISTINCT s.SupplierName
FROM Suppliers s
INNER JOIN Products p ON s.SupplierID = p.SupplierID;
```
쿼리 B:
```sql
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT 1 FROM Products
WHERE Products.SupplierID = Suppliers.SupplierID);
```
A. 쿼리 A가 항상 더 효율적이다
B. 쿼리 B가 일반적으로 더 효율적이다
C. 두 쿼리의 효율성은 항상 동일하다
D. 데이터 크기에 관계없이 쿼리 A가 더 빠르다

정답: B


EXISTS와 JOIN 방식의 성능 차이를 비교:

쿼리 A (JOIN + DISTINCT) 처리 과정:

1. 두 테이블을 완전히 조인
2. 모든 조인 결과 생성 (중복 포함)
3. DISTINCT로 중복 제거
4. 최종 결과 반환

쿼리 B (EXISTS) 처리 과정:

1. 각 공급업체별로 관련 상품이 있는지만 확인
2. 첫 번째 일치하는 상품 발견 시 즉시 TRUE 반환
3. 불필요한 조인 작업 생략

쿼리 B가 더 효율적인 이유:

• 조기 종료: 첫 번째 일치 시 즉시 중단
• 메모리 효율성: 중간 결과 저장 불필요
• 중복 처리 생략: DISTINCT 과정 불필요
• I/O 최적화: 필요한 만큼만 데이터 읽기

💡 학습 팁

이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.