SQL - 문제 미리보기

문제 1745

hard
다음 상황에서 가장 적절한 명령어는? 상황: 대용량 테이블 SalesData(500만 행)에서 모든 데이터를 삭제해야 하지만, 내일 아침에 새로운 데이터를 다시 입력할 예정입니다. 테이블 구조와 인덱스는 그대로 유지하고 싶고, 가장 빠른 방법을 원합니다.
A. `DELETE FROM SalesData;`
B. `DROP TABLE SalesData;`
C. `TRUNCATE TABLE SalesData;`
D. `UPDATE SalesData SET all_columns = NULL;`

정답: C

이 상황에서는 TRUNCATE TABLE이 가장 적절한 선택입니다. 요구사항 분석: • 대용량 데이터: 500만 행의 빠른 삭제 필요 • 구조 유지: 테이블 스키마와 인덱스 보존 • 재사용 예정: 내일 새 데이터 입력 • 성능 우선: 가장 빠른 삭제 방법 필요 각 선택지 분석: 1. DELETE FROM SalesData: ```sql DELETE FROM SalesData; ``` 평가: ✓ 구조 유지 ✗ 매우 느린 성능 (500만 행 개별 삭제) ✗ 트랜잭션 로그 대량 생성 ✗ 시간: 수십 분~수 시간 소요 가능 2. DROP TABLE SalesData: ```sql DROP TABLE SalesData; ``` 평가: ✓ 빠른 성능 ✗ 구조까지 삭제 (요구사항 불만족) ✗ 인덱스 삭제됨 ✗ 내일 사용 전 테이블 재생성 필요 3. TRUNCATE TABLE SalesData (정답): ```sql TRUNCATE TABLE SalesData; ``` 평가: ✓ 매우 빠른 성능 (수초 내 완료) ✓ 구조 완전 보존 ✓ 인덱스 유지 ✓ 즉시 재사용 가능 ✓ 최소 로깅으로 리소스 절약 4. UPDATE SET NULL: ```sql UPDATE SalesData SET column1 = NULL, column2 = NULL, ...; ``` 평가: ✗ 데이터 삭제가 아닌 NULL로 변경 ✗ 매우 느린 성능 ✗ 저장공간 여전히 사용 ✗ 요구사항 불만족

💡 학습 팁

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