Share via


truncate tablo kullanarak tüm satırları silme

truncate tablo deyim, bir tablodaki tüm satırların silinmesi, hızlı ve etkili yöntem.truncate table, delete deyim where yan tümce tümce tümce olmayan benzer.Ancak, truncate table daha hızlı ve daha az sistem ve işlem günlüğü kaynak kullanır.

truncate table, delete deyim karşılaştırıldığında, aşağıdaki avantajları vardır:

  • Daha az hareket günlük alanı kullanılır.

    delete deyim satırların bir anda kaldırır bir saat ve Silinen her satır için hareket günlüğüne bir girdi kaydeder.truncate table tablo verilerini depolamak için kullanılan veri sayfalarının ayırmayı kaldırma tarafından verileri kaldırır ve yalnızca sayfa deallocations hareket günlüğüne kaydeder.

  • Genellikle daha az kilitleri kullanılır.

    delete deyim yürütüldüğünde bir satır kilidi kullanarak, her içinde satır tablo silinmek üzere kilitli.truncate table tablo ve sayfa ancak değil her satırı her zaman kilitler.

  • Sıfır sayfaları kalır, istisnasız tablo.

    delete deyim yürütüldükten sonra tablo hala boş sayfaları içerir.Örneğin, bir yığın boş sayfaları en az bir özel (lck_m_x) azaltılması olamaz tablo kilidi.Silme işlemi kullanırsanız, bir tablo kilidi, tablo (yığın) çok sayıda boş sayfaları içerir.Dizinler için bu sayfaları arka plan temizleme işlemi tarafından hızlı bir şekilde azaltılması, ancak silme işlemi, arkasındaki boş sayfaları bırakabilirsiniz.

Sil ile bir tablo tanımını kullanarak boşaltılıyor truncate table ile birlikte, dizinleri ve diğer ilişkili nesneleri veritabanında kalır.tablo o sütun sütun için tanımlanan tohum değerini sıfırlamak için sayaç, kimlik sütunu içerir.Hiçbir tohum tanımlanmışsa, varsayılan değer olarak 1 kullanılır.Kimlik sayaç korumak için delete kullanın.

Büyük tablolar kesiliyor

Microsoft SQL Server introduced the ability to drop or truncate tables that have more than 128 extents without holding simultaneous locks on all the extents required for the drop.Daha fazla bilgi için bkz: Bırakarak ve büyük nesneler yeniden oluşturuluyor.

Örnekler

The following example removes all data from the JobCandidate table.SELECT statements are included before and after the TRUNCATE TABLE statement to compare results.

USE AdventureWorks2008R2;
GO
SELECT COUNT(*) AS BeforeTruncateCount 
FROM HumanResources.JobCandidate;
GO
TRUNCATE TABLE HumanResources.JobCandidate;
GO
SELECT COUNT(*) AS AfterTruncateCount 
FROM HumanResources.JobCandidate;
GO