데이터 제거 명령 비교

DELETE는 행을 지우고, TRUNCATE는 경계를 접고, DROP은 테이블을 없앱니다.

세 명령은 모두 “없앤다”처럼 보이지만 남기는 것이 다릅니다. 운영에서는 속도보다 복구 가능성, 참조 관계, 저장 공간 효과를 먼저 봐야 합니다.

DELETE FROM

행 단위
구조 테이블과 인덱스 구조는 그대로 유지됩니다.
복구 커밋 전 트랜잭션 안에서는 롤백할 수 있습니다.
공간 대량 삭제 뒤에도 저장 경계가 남을 수 있습니다.

TRUNCATE TABLE

전체 비우기
구조 테이블 구조는 남기고 모든 행을 빠르게 제거합니다.
복구 롤백 가능 여부는 DBMS와 트랜잭션 처리 방식에 따라 다릅니다.
제약 참조 중인 FK가 있으면 제한될 수 있고, DELETE 트리거는 보통 실행되지 않습니다.

DROP TABLE

객체 삭제
구조 테이블, 데이터, 인덱스, 권한 등 객체 자체가 제거됩니다.
참조 DROP TABLE CASCADE는 자식 데이터 삭제가 아니라 종속 제약/객체 정리입니다.
복구 Oracle Flashback 같은 별도 기능이 없다면 복구 부담이 큽니다.
조건 삭제

일부 행만 지울 때는 WHERE가 가능한 DELETE가 맞습니다.

전체 비우기

로그성 테이블처럼 구조를 재사용하려면 TRUNCATE가 빠르지만 복구 정책을 확인합니다.

객체 제거

DROP은 의존 객체와 배포 코드를 확인한 뒤 마지막 정리 단계에서 실행합니다.