드롭 테이블과 잘라내기 테이블의 차이점은 무엇입니까?
보고서 롤업의 일부로 작성하는 테이블이 있습니다.저는 나중에 그것들이 전혀 필요하지 않습니다.누군가가 그것들을 잘라내는 것이 더 빠를 것이라고 언급했습니다.
테이블에서 레코드를 삭제하면 삭제할 때마다 로그가 기록되고 삭제된 레코드에 대한 삭제 트리거가 실행됩니다.잘라내기는 각 행을 기록하지 않고 테이블을 비우는 더 강력한 명령입니다. 각 행의 외부 키를 확인해야 하기 때문에 SQL Server는 테이블을 참조하는 외부 키가 있는 테이블을 잘라내는 것을 방지합니다.
잘라내기는 일반적으로 매우 빠르기 때문에 임시 테이블에서 데이터를 정리하는 데 이상적입니다.나중에 사용할 수 있도록 테이블 구조를 보존합니다.
테이블 정의와 데이터를 실제로 제거하려면 테이블을 놓기만 하면 됩니다.
Drop TABLE은 테이블을 삭제합니다.
잘라내기 테이블은 비워지지만 이후 데이터를 위해 구조를 남겨둡니다.
DROP와 TRUNK는 서로 다른 작업을 수행합니다.
테이블 잘라내기
개별 행 삭제를 기록하지 않고 테이블에서 모든 행을 제거합니다. TRUNKATE TABLE은 WHERE 절이 없는 DELETE 문과 유사하지만 TRUNKATE TABLE이 더 빠르고 더 적은 시스템 및 트랜잭션 로그 리소스를 사용합니다.
드롭 테이블
하나 이상의 테이블 정의와 해당 테이블에 대한 모든 데이터, 인덱스, 트리거, 제약 조건 및 사용 권한 규격을 제거합니다.
속도에 관한 한 차이는 작아야 합니다.어쨌든 테이블 구조가 전혀 필요하지 않다면 DROP을 사용하십시오.
DELETE TABLE과 TRUNKATE TABLE의 차이를 말씀하시는 것 같습니다.
드롭 테이블
데이터베이스에서 테이블을 제거합니다.
테이블 삭제
조건 없이 모든 행을 삭제합니다.트리거와 참조가 있는 경우 모든 행에 대해 이 작업이 처리됩니다.또한 인덱스가 있으면 수정될 것입니다.
테이블 잘라내기
각 행을 기록하지 않고 행 수를 0으로 설정합니다.그것은 다른 두 가지 모두보다 훨씬 빠르다는 것.
이러한 답변 중 어느 것도 이 두 작업에 대한 중요한 차이점을 지적하지 않습니다.드롭 테이블은 롤백할 수 있는 작업입니다.
그러나 잘라내기는 롤백할 수 없습니다. ['TRUNCATE TABLE'도 롤백할 수 있습니다.]이렇게 하면 행이 많을 경우 테이블을 롤백할 경우에 대비하여 모든 행을 임시 공간에 기록해야 하므로 매우 큰 테이블을 삭제하는 데 비용이 많이 들 수 있습니다.
일반적으로 큰 테이블을 삭제하려면 잘라낸 다음 삭제합니다.이렇게 하면 데이터가 기록 없이 고정되고 테이블을 삭제할 수 있으며 기록할 필요가 없기 때문에 매우 저렴합니다.
잘라내기는 데이터를 삭제하고 테이블을 떠나지만 실제로는 데이터와 테이블 자체를 삭제합니다.(외부 키를 사용해도 이러한 작업이 배제되지 않습니다.)
드롭 테이블
DROP TABLE [table_name];
DROP 명령은 데이터베이스에서 테이블을 제거하는 데 사용됩니다.이것은 DDL 명령입니다.테이블의 모든 행, 인덱스 및 권한도 제거됩니다. DROP 작업을 롤백할 수 없습니다.
테이블 삭제
DELETE FROM [table_name]
WHERE [condition];
DELETE FROM [table_name];
DELETE 명령은 DML 명령입니다.WHERE 절에 지정된 조건에 따라 테이블에서 모든 행 또는 일부 행을 삭제하는 데 사용할 수 있습니다.행 잠금을 사용하여 실행되며 테이블의 각 행은 삭제를 위해 잠깁니다.트랜잭션 로그를 유지 관리하므로 잘라내기보다 느립니다.DELETE 작업을 롤백할 수 있습니다.
테이블 잘라내기
TRUNCATE TABLE [table_name];
TRUNKATE 명령은 테이블에서 모든 행을 제거합니다.각 행의 삭제를 기록하지 않고 테이블의 데이터 페이지 할당 취소를 기록하므로 DELETE보다 빠릅니다.테이블 잠금을 사용하여 실행되며 모든 레코드를 제거하기 위해 전체 테이블이 잠깁니다.DDL 명령입니다. 잘라내기 작업은 롤백할 수 없습니다.
테이블 잘라내기는 이전 인덱스와 다른 인덱스를 모두 유지합니다. 테이블을 삭제하면 테이블이 삭제되고 나중에 다시 만들어야 합니다.
드롭은 테이블을 완전히 제거하고 정의도 제거합니다.잘라내기는 테이블을 비우지만 정의를 제거하지는 않습니다.
테이블을 자르면 테이블이 비워집니다.테이블을 삭제하면 테이블이 완전히 삭제됩니다.둘 중 하나는 빠르지만 삭제하는 것이 더 빠를 수 있습니다(데이터베이스 엔진에 따라 다름).
더 이상 필요하지 않으면 스키마가 흐트러지지 않도록 삭제합니다.
테이블 A를 잘라내는 대신 테이블 A를 삭제하시겠습니까?일반적인 오해는 그들이 같은 일을 한다는 것입니다.그렇지 않습니다.사실, 그 둘 사이에는 많은 차이점이 있습니다.
DELETE는 행 단위로 기록되는 작업입니다.즉, 각 행의 삭제가 기록되고 물리적으로 삭제됩니다.
외부 키 또는 다른 제약 조건을 그대로 둔 상태에서 제약 조건을 위반하지 않는 행을 삭제할 수 있습니다.
TRUNCATE도 기록되는 작업이지만 다른 방식으로 기록됩니다. TRUNCATE는 데이터가 있는 데이터 페이지의 할당 취소를 기록합니다.데이터 페이지의 할당 취소는 데이터 행이 실제로 데이터 페이지에 여전히 존재하지만 익스텐트가 재사용을 위해 비어 있는 것으로 표시되었음을 의미합니다.따라서 잘라내기 작업을 더 빠르게 수행하여 삭제 작업을 수행할 수 있습니다.
외부 키 제약 조건이 있는 테이블은 잘라낼 수 없습니다.구속조건을 제거하고 테이블을 잘라낸 후 구속조건을 다시 적용해야 합니다.
TRUNCATE는 ID 열을 기본 시드 값으로 재설정합니다.
잘라내기는 모든 행을 제거하지만 테이블 자체는 제거하지 않으므로 기본적으로 where 절이 없는 삭제와 동일하지만 일반적으로 더 빠릅니다.
위의 진술 중 하나를 정정합니다..."인증서를 롤백할 수 없습니다."
잘라내기는 롤백할 수 있습니다.외부 키 참조가 있는 경우와 같이 테이블 잘라내기 또는 삭제를 수행할 수 없는 경우가 있습니다.월례 보고와 같은 업무의 경우, 저는 더 이상 필요하지 않게 되면 테이블을 내려놓을 것입니다.이 롤업 보고를 더 자주 수행했다면 테이블을 대신 보관하고 잘라내기를 사용했을 것입니다.
이것이 도움이 되길 바랍니다. 여기 유용한 정보가 좀 더 있습니다.
자세한 내용은 다음 문서를 참조하십시오. http://sqlblog.com/blogs/denis_gobo/archive/2007/06/13/1458.aspx
또한 삭제와 잘라내기에 대한 자세한 내용은 다음 문서를 참조하십시오. http://www.sql-server-performance.com/faq/delete_truncate_difference_p1.aspx
고마워요! 제프
TRUNKATE TABLE은 WHERE 절이 없는 DELETE 문과 기능적으로 동일합니다. 둘 다 테이블의 모든 행을 제거합니다.그러나 TRUNKATE TABLE은 DELETE보다 더 빠르고 시스템 및 트랜잭션 로그 리소스를 더 적게 사용합니다.
DELETE 문은 한 번에 하나씩 행을 제거하고 삭제된 각 행에 대한 항목을 트랜잭션 로그에 기록합니다. TRUNKATE TABLE은 테이블의 데이터를 저장하는 데 사용되는 데이터 페이지의 할당을 해제하여 데이터를 제거하고 페이지 할당 해제만 트랜잭션 로그에 기록합니다.
잘라내기 테이블은 테이블에서 모든 행을 제거하지만 테이블 구조와 해당 열, 제약 조건, 인덱스 등은 그대로 유지됩니다.ID가 새 행에 사용하는 카운터가 열의 시드로 재설정됩니다.ID 카운터를 유지하려면 대신 DELETE를 사용합니다.테이블 정의와 해당 데이터를 제거하려면 Drop TABLE 문을 사용합니다.
외부 키 제약 조건에서 참조하는 테이블에는 잘라내기 테이블을 사용할 수 없습니다. 대신 WHERE 절이 없는 DELETE 문을 사용하십시오. 문을 사용하십시오.TRUNCATE TABLE은 기록되지 않으므로 트리거를 활성화할 수 없습니다.
색인화된 보기에 참여하는 테이블에는 잘라내기 테이블을 사용할 수 없습니다.
출처: http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx
SQL 표준에서 DROP 테이블은 테이블을 제거하고 테이블 스키마 - TRUNKATE는 모든 행을 제거합니다.
여기서의 답은 질문과 일치하지만, 저는 당신이 묻지 않은 질문에 대답할 것입니다."잘라내기 또는 삭제를 사용해야 합니까?"테이블에서 모든 행을 제거하는 경우 훨씬 빠르므로 일반적으로 잘라내기를 원할 것입니다.왜 그게 훨씬 빠를까요?적어도 오라클의 경우에는 높은 워터마크를 재설정합니다.이는 기본적으로 데이터의 역참조이며 DB가 데이터를 다른 용도로 재사용할 수 있도록 합니다.
삭제 VS 잘라내기
- 그
DELETE
문은 한 번에 하나씩 행을 제거하고 삭제된 각 행에 대한 항목을 트랜잭션 로그에 기록합니다.TRUNCATE TABLE
데 취소하여 합니다. - 우리는 사용할 수 있습니다.
WHERE
절DELETE
그나러로TRUNCATE
을 사용할 수 없습니다. - 때.
DELETE
문은 행 잠금을 사용하여 실행되며, 테이블의 각 행은 삭제를 위해 잠깁니다.TRUNCATE TABLE
각 는 않습니다. - 에.
DELETE
문이 실행되었지만 테이블에 빈 페이지가 계속 포함될 수 있습니다.삭제 작업에서 테이블 잠금을 사용하지 않으면 테이블(히프)에 빈 페이지가 많이 포함됩니다. 작업은 를 남길 수 페이지는 비워둘 수 .
정리 프로세스에 됩니다. TRUNCATE TABLE
열, 조건 유지됩니다.DELETE
진술이 그렇지 않습니다.RESEED
ID 열이지만TRUNCATE
진술RESEEDS
그IDENTITY
기둥.- 사용할 수 없습니다.
TRUNCATE TABLE
다음과 같은 테이블에서:- 에 의해 참조됨
FOREIGN KEY
제약 조건. (자신을 참조하는 외래 키가 있는 테이블을 잘라낼 수 있습니다.) - 인덱싱된 보기에 참여합니다.
- 트랜잭션 복제 또는 병합 복제를 사용하여 게시됩니다.
- 에 의해 참조됨
TRUNCATE TABLE
작업이 개별 행 삭제를 기록하지 않기 때문에 트리거를 활성화할 수 없습니다.
전체 테이블 및 모든 테이블 구조 삭제
잘라내기 테이블에서 모든 행 삭제 행 인덱스도 삭제합니다. 삭제와 다릅니다.
문 삭제
Delete Statement 테이블 행 삭제 및 행 수 반환 table.in 이 문에서 삭제되었습니다. 테이블에서 데이터를 삭제하려면 where 절을 사용합니다.
- 레코드를 하나씩 삭제했기 때문에 문 삭제가 문 잘라내기보다 느립니다.
문 잘라내기
문 잘라내기 - 테이블에서 모든 행을 삭제하거나 제거합니다.
- 테이블에서 모든 레코드를 삭제했기 때문에 Delete Statement보다 빠릅니다.
- 줄 바꿈 문이 테이블에서 삭제된 행 수를 반환하지 않음
삭제명세서
드롭 문은 테이블의 구조뿐만 아니라 모든 레코드를 삭제했습니다.
삭제
DELETE 명령은 테이블에서 행을 제거하는 데 사용됩니다.WHERE 절은 일부 행만 제거하는 데 사용할 수 있습니다.WHERE 조건을 지정하지 않으면 모든 행이 제거됩니다.삭제 작업을 수행한 후 변경 내용을 영구적으로 변경하거나 취소하려면 트랜잭션을 커밋하거나 롤백해야 합니다.
자르기
잘라내기는 테이블에서 모든 행을 제거합니다.작업을 롤백할 수 없습니다...따라서 TRUCATE가 더 빠르고 DELETE만큼 실행 취소 공간을 사용하지 않습니다.
보낸 사람: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands
언급URL : https://stackoverflow.com/questions/135653/difference-between-drop-table-and-truncate-table
'programing' 카테고리의 다른 글
Oracle 패키지 수준 변수의 범위 (0) | 2023.06.30 |
---|---|
Ruby의 base64 인코딩 문자열에 이상한 \n (0) | 2023.06.30 |
MySQL 인덱싱은 PHP를 통해 속도 효과가 없지만 PHP MyAdmin에서는 효과가 있습니다. (0) | 2023.06.30 |
ggplot2 선 그림에 범례 추가 (0) | 2023.06.30 |
java.sql.SQL 예외: ORA-03115: 지원되지 않는 네트워크 데이터 유형 또는 표현 (0) | 2023.06.30 |