Tôi đã phát hiện ra BẢNG TRUNCATE trong tham chiếu giao dịch-msdn. Đối với tất cả các quan tâm ở đây là những nhận xét:
TABLE TRUNCATE có chức năng giống với câu lệnh DELETE không có mệnh đề WHERE: cả hai loại bỏ tất cả các hàng trong bảng. Nhưng TRUNCATE TABLE nhanh hơn và sử dụng ít tài nguyên nhật ký hệ thống và giao dịch hơn DELETE.
Câu lệnh DELETE loại bỏ từng hàng một và ghi lại một mục nhập trong nhật ký giao dịch cho mỗi hàng đã xóa. TRUNCATE TABLE loại bỏ dữ liệu bằng cách deallocating các trang dữ liệu được sử dụng để lưu trữ dữ liệu của bảng, và chỉ deallocations trang được ghi lại trong nhật ký giao dịch.
TẮT TRUNCATE TABLE xóa tất cả các hàng khỏi bảng, nhưng cấu trúc bảng và các cột, ràng buộc, chỉ mục của nó vẫn giữ nguyên. Bộ đếm được sử dụng bởi danh tính cho các hàng mới được đặt lại thành hạt giống cho cột. Nếu bạn muốn giữ lại bộ nhận dạng, hãy sử dụng DELETE. Nếu bạn muốn loại bỏ định nghĩa bảng và dữ liệu của nó, hãy sử dụng câu lệnh DROP TABLE.
Bạn không thể sử dụng TABLE TRUNCATE trên bảng được tham chiếu bởi ràng buộc KEY NGOẠI TỆ; thay vào đó, hãy sử dụng câu lệnh DELETE mà không có mệnh đề WHERE. Bởi vì TRUNCATE TABLE không được ghi lại, nó không thể kích hoạt một trigger.
TRUNCATE TABLE có thể không được sử dụng trên các bảng tham gia vào chế độ xem được lập chỉ mục.
Nguồn
2008-09-15 15:50:33
TRUNCATE là nhanh nhất, chỉ cần nhớ rằng bạn sẽ KHÔNG thể khôi phục dữ liệu trong trường hợp xảy ra sự cố. –
Lưu ý về TRUNCATE, Nếu một trong các cột là cột IDENTITY, TRUNCATE sẽ đặt lại SEED của cột đó thành giá trị ban đầu của nó (được chỉ định khi xác định bảng). Vì vậy, theo nghĩa nào đó, nó giống như bắt đầu với một cái bàn hoàn toàn mới. Tôi thấy nó hữu ích để làm sạch dữ liệu trước khi repopulating bảng – kristof
Có, và trong Oracle World chúng tôi gọi nó là watermark shift, không chắc chắn về những người khác. –