2014-06-05 2 views
0

그래서 TRUNCATE 대 DROP 사용과 관련하여 SQL 표준을 연구했습니다. 우리 회사는 표준 코딩 규칙으로 DROP 앞에 TRUNCATE를 사용해야하는지 아니면 DROP 만 사용해야하는지 결정하려고합니다. 일반적으로 DROP 대신 항상 TRUNCATE와 DROP을 사용했습니다. https://dba.stackexchange.com/questions/4163/why-use-both-truncate-and-drop임시 테이블에 대한 truncate vs drop 사용에 대한 모범 사례

위의 링크는 TRUNCATE로, 불필요한 오버 헤드가 있다는 것을 주소 : 모두를 사용할 필요는 없다 같은

이 이전에 대답 질문에 따르면, 그것은 보인다.

그러나 많은 사람들이 DROP 대신 TRUNCATE와 DROP을 계속 사용하고 있기 때문에 DROP 전에 TRUNCATE를 사용하는 것이 유리합니까?

+0

TRUNCATE를 사용하면 스키마를 제외한 모든 행이 제거됩니다. DROP를 사용하면 두 행 모두 사라집니다. 그렇다면 왜 여분의 조치를 취해야합니까? 테이블을 직접 삭제하면 DROP가 도입됩니다. Morover, DROP 전에 TRUNCATE를 사용하는 것은 전혀 표준이 아닙니다 ... 대신 아마도 낮은 표준입니다. – Rahul

+0

@Rahul. . . 나는 역사적으로'DROP'가 먼저 존재한다고 생각하고,'TRUNCATE'는 로깅하지 않고 테이블의 모든 행을 삭제하는 효율적인 메커니즘으로 소개되었습니다. 그렇지 않으면 귀하의 의견에 동의합니다. –

+0

내가 틀렸다면 나를 바로 잡습니다. 'DROP' 후에 롤백 할 수는 있지만'TRUNCATE' 후에는 롤백 할 수 없습니다. –

답변

0

데이터베이스, 엔진 및 버전에 따라 다릅니다.

예제 : 최신 버전의 mysql은 DROP을 수행하고 테이블을 재생성하여 TRUNCATE를 실행합니다. 구버전의 버그에 따라 이전 버전에서는 표를 삭제하고 다시 작성하는 것보다 훨씬 느린 표에서 항목을 삭제합니다. 왜 DROP 전에 TRUNCATE 할 것인가에 대한 설명이 아니라 오히려 DROP하고 최적화 된 truncate 버전으로 다시 만드는 이유에 대해 설명합니다.

다른 데이터베이스, 엔진 및 버전에는 고유 한 특성이있을 수 있습니다.

현재 시스템에서이 작업을 수행 할 이유가 없으면 다른 시스템에서이 작업을 수행 한 개발자가 수행 한 동작 일 수 있습니다.

관련 문제