TRUNCATE
테이블 스캔을 수행하지 않고 테이블에서 모든 행을 삭제합니다. 이 작업은 정규화되지 않은 DELETE 작업을 대신하여 더 빠르게 수행할 수 있는 수단입니다. TRUNCATE 명령을 실행하려면 테이블의 소유자 또는 수퍼유저이거나 TRUNCATE TABLE 권한이 부여되어야 합니다. 테이블을 잘라낼 수 있는 권한을 부여하려면 GRANT 명령을 사용합니다.
TRUNCATE는 DELETE보다 훨씬 더 효율적이며 VACUUM 및 ANALYZE가 필요하지 않습니다. 하지만 TRUNCATE는 이 명령이 실행되는 트랜잭션을 커밋합니다.
구문
TRUNCATE [ TABLE ] table_name
이 명령은 구체화된 뷰에서도 작동합니다.
TRUNCATE materialized_view_name
파라미터
- TABLE
-
선택적 키워드입니다.
- table_name
-
임시 또는 영구 테이블입니다. 테이블 소유자 또는 수퍼유저만이 테이블을 잘라낼 수 있습니다.
외래 키 제약 조건에서 참조되는 테이블을 포함한 어떤 테이블이든 잘라낼 수 있습니다.
잘라낸 후 테이블을 vacuum할 필요가 없습니다.
- materialized_view_name
-
구체화된 뷰
구체화된 뷰로 스트리밍 모으기에 사용되는 구체화된 뷰를 잘라낼 수 있습니다.
사용 노트
TRUNCATE 명령은 명령이 실행되는 트랜잭션을 커밋하므로 TRUNCATE 작업을 롤백할 수 없고, TRUNCATE 명령은 스스로를 커밋할 때 다른 작업을 커밋할 수 있습니다.
예
CATEGORY 테이블에서 모든 행을 삭제하려면 TRUNCATE 명령을 사용하십시오.
truncate category;
TRUNCATE 작업 롤백을 시도합니다.
begin; truncate date; rollback; select count(*) from date; count ------- 0 (1 row)
TRUNCATE 명령이 자동으로 커밋되었으므로 ROLLBACK 명령 후 DATE 테이블이 빈 상태로 남습니다.
다음 예제에서는 TRUNCATE 명령을 사용하여 구체화된 뷰에서 모든 행을 삭제합니다.
truncate my_materialized_view;
구체화된 뷰의 모든 레코드를 삭제하고 구체화된 뷰와 해당 스키마를 그대로 유지합니다. 쿼리에서 구체화된 뷰 이름은 샘플입니다.