DELETE
의 핵심 차이는 테이블에서 데이터를 제거하는 접근 방식에 있습니다. TRUNCATE
절을 기반으로 DELETE
one으로 를 하나씩 제거하는 데이터 조작 언어 (dml) 문입니다 (또는 조항이 제공되는 경우 모든 행). 즉, 각 행을 개별적으로 처리하여 각 삭제를 기록합니다. 반면에 WHERE
는 단일 스 와이프로 테이블을 깨끗하게 닦는 것과 같습니다. 결정적으로, TRUNCATE
는 조건부 제거를 허용하는 반면, 는 항상 모든 행을 제거합니다. 삭제 대 Truncate를 사용하는 성능의 영향은 무엇입니까? 특히 큰 테이블에서 속도 측면에서 DELETE
>가 상당히 우수합니다. TRUNCATE
는 각 삭제를 개별적으로 로그인 할 필요가 없기 때문입니다. 성능 게인은 특히 테이블에서 많은 행이나 모든 행을 제거 해야하는 시나리오에서 특히 두드러집니다. 로깅 오버 헤드와 결합 된 의 행 별 처리는 상당한 성능 병목 현상을 초래할 수 있습니다. 또한, 운영에 대한 트랜잭션 로그는 의 트랜잭션 로그보다 훨씬 크며 트랜잭션 커밋 시간과 잠재적으로 디스크 공간 소비에 영향을 미칩니다. 수백만 행을 삭제하는 시나리오를 고려하십시오. 는 DELETE
>의 일부가 취해질 것입니다. TRUNCATE
롤백과 트랜잭션은 삭제 및 자르기 진술과 어떻게 다르게 행동합니까? 진술은 트랜잭션 내에서 작동합니다. 즉, 트랜잭션 내에서 A TRUNCATE
후에는 삭제 된 데이터를 복원하지 않습니다. 작업이 완료되면 데이터는 돌이킬 수 없게 제거됩니다. DELETE
는 DML 작업과 동일한 수준의 과립성에서 개별 행 제거의 상세한 로그를 유지하지 않는 DDL 작업이기 때문입니다. 삭제 및 자르기를 사용한 후 데이터를 복구 할 수 있습니까? 그렇다면 어떻게 a DELETE
운영 후 데이터 복구는 훨씬 더 어려워집니다. ROLLBACK
는 DDL 문이므로 일반적으로 개별 행에 대한 상세한 트랜잭션 로그 항목을 생성하지 않습니다. 따라서 a
후 복구를위한 가장 좋은 방법은 데이터베이스 백업에 의존하는 것입니다. 최근 백업이있는 경우 해당 백업에서 테이블을 복원 할 수 있습니다. 트랜잭션 로그에서만 복구하는 것은 일반적으로 TRUNCATE
이후에 실현 가능하지 않습니다. 성공적인 회복 가능성은 백업의 성과 빈도에 직접 비례합니다.
위 내용은 SQL Delete 행과 잘림의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!