DB/MySQL

DELETE vs TRUNCATE

annovation 2025. 2. 26. 08:50

DELETE 

  • 테이블에서 특정 조건에 맞는 데이터를 삭제하는 SQL 명령어
  • 데이터를 하나씩 삭제하며, 삭제된 데이터는 복구가 가능(트랜잭션을 통해 롤백 가능)
DELETE FROM employees
WHERE department = 'HR';

TRUNCATE

  • 테이블에 있는 모든 데이터를 한 번에 삭제하는 SQL 명령어
  • 데이터의 구조(테이블 스키마)는 유지하지만, 삭제된 데이터는 복구가 불가능
TRUNCATE TABLE employees;

DELETE vs TRUNCATE 

비교 항목 DELETE TRUNCATE
데이터 삭제 범위 조건에 따라 삭제 가능 테이블 전체 데이터 삭제
속도 느림 (트랜잭션 로그 기록) 빠름
복구 가능 여부 트랜잭션 롤백을 통해 복구 가능 복구 불가
트리거(trigger) 트리거 호출 트리거 호출되지 않음
외래 키 사용 테이블 사용 가능 사용 불가

요약

  • DELETE는 조건부 데이터 삭제에 적합하며, 트랜잭션을 통해 복구가 가능
  • TRUNCATE는 테이블의 모든 데이터를 빠르게 초기화할 때 적합하나, 복구가 불가능하고 외래 키 제한이 있음
  • DELETE는 상세 데이터 관리가 필요한 경우에, TRUNCATE는 성능이 중요한 경우에 사용

출처

OpenAI ChatGPT (https://openai.com)

'DB > MySQL' 카테고리의 다른 글

트랜젝션 (Transaction)  (1) 2025.02.01
서브쿼리(Subquery)  (0) 2025.01.06
GROUP_CONCAT feat. DISTINCT  (0) 2025.01.03
GROUP BY  (0) 2025.01.02
JOIN  (2) 2025.01.01