TRUNCATE와 DELETE는 모두 데이터를 삭제하는 명령인데
TRUNCATE는 DDL(자동커밋)이고
DELETE는 DML이다.
이 외에도 몇가지의 차이점이 존재한다.
이유는 DELETE와 TRUNCATE의 데이터 삭제 방법이 다르기 때문이다.
DELETE
WHERE절을 사용하여 테이블에 있는 데이터를 하나하나 선택하여 제거한다.
TRUNCATE
전체 데이터를 한번에 삭제한다.
HWM(high-water mark)를 처음으로 이동시키는 방식으로 테이블 구조는 그대로 남겨둔 채 모든 행을 삭제한다.
SQL | 테이블 존재 | 속도 | 복구 | |
DELETE | DML | O | 아주 느리다 | ROLLBACK (ONLINE) |
TRUNCATE | DDL | O | 매우 느리다 | FLASHBACK DATABASE (OFFLINE) |
DROP | DDL | O | 매우 빠르다 | FLASHBACK DROP (ONLINE) |
728x90
'SQL' 카테고리의 다른 글
[SQL] NULL 관련 함수 (0) | 2024.11.03 |
---|---|
[SQL] 내장함수 (단일행 함수와 다중행 함수) (0) | 2024.11.03 |
[SQL] (오라클 기준) GROUP BY 확장함수(ROLLUP, CUBE) (0) | 2024.10.01 |
[SQL] JOIN + USING (0) | 2024.10.01 |
[SQL] 서브쿼리의 결과값이 NULL이 될 경우 (0) | 2024.09.30 |