Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Ưu và nhược điểm của TRUNCATE so với DELETE FROM

TRUNCATE không tạo ra bất kỳ dữ liệu khôi phục nào, điều này làm cho nó nhanh như chớp. Nó chỉ phân bổ các trang dữ liệu được sử dụng bởi bảng.

Tuy nhiên, nếu bạn đang tham gia một giao dịch và muốn có khả năng "hoàn tác" việc xóa này, bạn cần sử dụng DELETE FROM , mang lại khả năng khôi phục.

CHỈNH SỬA: Lưu ý rằng điều trên không chính xác đối với SQL Server (nhưng nó áp dụng cho Oracle). Trong SQL Server, có thể khôi phục hoạt động cắt ngắn nếu bạn đang ở trong một giao dịch và giao dịch chưa được cam kết. Từ góc độ SQL Server, một điểm khác biệt chính giữa DELETE FROM và TRUNCATE là this :"Câu lệnh DELETE xóa 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. BẢNG TRUNCATE xóa dữ liệu bằng cách phân bổ các trang dữ liệu được sử dụng để lưu trữ dữ liệu bảng và chỉ ghi lại các vị trí giao dịch trang trong nhật ký giao dịch . "

Nói cách khác, ít ghi nhật ký hơn trong một TRUNCATE bởi vì chỉ các vị trí giao dịch trang được ghi lại trong nhật ký giao dịch, trong khi với XÓA TỪ mỗi lần xóa hàng được ghi lại. Đó là một trong những lý do khiến TRUNCATE hoạt động nhanh như chớp.

Cũng lưu ý từ liên kết MSDN đó rằng bạn không thể cắt ngắn các bảng được tham chiếu bởi các ràng buộc khóa ngoại, tham gia vào chế độ xem được lập chỉ mục hoặc được xuất bản bằng cách sử dụng sao chép giao dịch hoặc sao chép hợp nhất.

CHỈNH SỬA 2: Một điểm quan trọng khác là BẢNG TRUNCATE sẽ đặt lại danh tính của bạn về hạt giống ban đầu, trong khi XÓA TỪ sẽ tiếp tục tăng dần từ nơi nó dừng lại. Tham khảo:Câu trả lời của Ben Robinson.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thực hiện IF ... THEN trong SQL SELECT?

  2. Truy vấn SQL Server Xml với nhiều không gian tên

  3. GUID:varchar (36) so với uniqueidentifier

  4. Tại sao &Khi nào tôi nên sử dụng SPARSE COLUMN? (SQL SERVER 2008)

  5. Không thể ghi dữ liệu vào phương tiện. Vs2017 ASP.net core Giàn giáo (MSSQL WINDOW 10)