본문 바로가기

소프트웨어-이야기/데이터 저장소 + 시각화

(PostgreSQL) Truncate TABLE VS delete

TRUNCATE란?

TRUNCATE는 대용량 테이블을 빠르게 지울 수 있는 명령문이다.

Truncate VS Delete 

DELETE 쿼리는 테이블의 데이터를 제거할 때 사용하는 쿼리이다. 그런데 전체 데이터를 삭제할 때에는 DELETE 쿼리는 효율적이지 않다.

이때에는 TRUNCATE TABLE을 사용하는 것이 좋다. TRUNCATE TABLE는 테이블 스캐닝 없이 전체 데이터를 지우기 때문에 DELETE 쿼리보다 빠르다. 그리고 스토리지를 바로 회수하기 때문에 VACUMM 작업을 수행할 필요가 없어서, 대용량 데이터를 제거할 때 유용하다.

사용법

TRUNCATE TABLE public.recommend_products;

테이블 식별 값(Primary Key)을 리셋시키고 싶은 경우에는 아래와 같이 질의한다.

TRUNCATE TABLE public.recommend_products RESTART IDENTITY;

TRUNCATE의 IDENTITY 기본 옵션은 CONTINUE IDENTITY이다. 그래서 위와 같이 식별값 리셋을 명시적으로 지정하지 않으면, 이전 시퀀스에서 증분 된 값을 사용한다. 

주의사항

TRUNCATE TABLE은 테이블의 모든 데이터를 삭제하기 때문에, ON DELETE 트리거를 일으키지 않는다.

참고

https://www.postgresqltutorial.com/postgresql-truncate-table/