본문 바로가기

DEV LOGS

[MSSQL] DROP TABLE VS TRUNCATE TABLE VS DELETE 문

DROP TABLE

- 테이블의 내용 및 테이블과 관련된 모든 것(테이블의 구조, 제약 조건, 인덱스 등)이 모두 삭제 된다.

- 트리거 사용시 'deleted' 임시테이블에 기록하지않는다.


TRUNCATE TABLE

- 테이블의 행 데이터만 삭제된다.

- 트랜잭션 로그 공간을 DELETE 문을 사용할 때 보다 덜 사용한다.

- DELETE  문에 비해 잠금을 적게 사용하므로 시스템의 성능 측면에서 효율적이다.

- 대량의 행 데이터가 있는 테이블의 데이터를 모두 삭제할 경우에 시스템에 부하를 덜 준다.

- 트리거 사용시 'deleted' 임시테이블에 기록하지않는다.


DELETE 문

- 테이블의 행 데이터만 삭제된다.

- 실행 될 때마다 암시적 트랜잭션을 호출하게 된다. 

( TRUNCATE TABLE 보다 로그 공간을 더 많이 사용하며, 잠금을 많이 사용하여 시스템의 성능 측면에 비효율 적이다. )

- 트리거 사용시 'deleted' 임시테이블에 기록한다.


결론

DROP TABLE VS TRUNCATE TABLE

DROP TABLE은 테이블의 내용 및 테이블과 관련된 모든 것을 삭제하여 다시 조회 할 수 없게 되지만, TRUNCATE TABLE은 내용만 삭제하므로 테이블의 형태는 남는다.


TRUNCATE TABLE VS DELETE 문

TRUNCATE TABLE은 대량의 행 데이터가 있는 테이블의 데이터를 삭제할 때 시스템 성능적으로 유용하다. 하지만 (DML)트리거를 사용하지 못해 삭제된 데이터가 임시테이블인 'deleted 테이블'에 기록되지 못한다.





참고문헌


우재남, 『뇌를 자극하는 SQL Server 2012』 한빛미디어 (2013-03-02 초판발행)



'DEV LOGS' 카테고리의 다른 글

[MSSQL] 트리거  (0) 2018.07.17
[MSSQL]트리거 사용시 임시 테이블  (0) 2018.07.17
[MSSQL] 커서  (1) 2018.07.10
[MSSQL] 테이블 변수 VS 임시 테이블  (0) 2018.07.10
[MSSQL] 스키마 바운드 함수  (0) 2018.07.10