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:
```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);
```
정답: B
EXISTS와 JOIN 방식의 성능 차이를 비교:
쿼리 A (JOIN + DISTINCT) 처리 과정:
1. 두 테이블을 완전히 조인
2. 모든 조인 결과 생성 (중복 포함)
3. DISTINCT로 중복 제거
4. 최종 결과 반환
쿼리 B (EXISTS) 처리 과정:
1. 각 공급업체별로 관련 상품이 있는지만 확인
2. 첫 번째 일치하는 상품 발견 시 즉시 TRUE 반환
3. 불필요한 조인 작업 생략
쿼리 B가 더 효율적인 이유:
• 조기 종료: 첫 번째 일치 시 즉시 중단
• 메모리 효율성: 중간 결과 저장 불필요
• 중복 처리 생략: DISTINCT 과정 불필요
• I/O 최적화: 필요한 만큼만 데이터 읽기
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.