2018-06-20

ما الفرق بين Delete From و Truncate Table


  الفرق الأساسي بين الجملتين هو ان Truncate Table TableName يتم تنفيذها اسرع بكثير جدا من Delete From   TableName و خاصة إذا كان الجدول به بيانات كثيره و يرجع ذلك لطريقة عمل كل منها كما هو موضح فيما يلي:


  1.  Truncate Table تقوم بحذف الصفحات المخزن فيها البينات الخاصة بالجدول مرة واحدة و لا تنظر فى البيانات التى بداخلها. , ولا تكتب تفاصيل البيانات المحذوفة فى Log File . هذا يؤدي إلأى سرعة رهيبة فى عملية الحذف

  2. Delete From TableName تقوم بحذف البيانات الخاصة فى الجدول عن طريق حذف صف صف من داخل الصفحات التى تخزن بيانات الجدول و تكتب كل عمليات الحذف لكل صف فى Log File. و هذا يحتاج وقت لكتابة كل صف تم حذفة فى Log File اولا حتى تنتهي عملية الحذف ثم تنظيف  Log File  بعد ذلك و هذا يستغرق وقت كبير لقراءة البيانات كلها من الصفحات المخزنة بها البيانات ثم كتابتها فى Log File  ثم اعادة حذف ما تم كتابته فى  Log File
    هذا يؤدي ايضا الى تضخم كبير فى حجم Log File  خاصة إذا كان الجدول المطلوب حذفه يحتوي علي بيانات كبيرة
  3.  
     ملحوظة: Truncate Table  لا يمكن تنفيذها على اى جدول يحتوي Primary Key ,  و مستعمل فى علاقة Foreign Key لجدول اخر.
     
و فى النهاية في انتظار ارائكم و تعليقاتكم
     

ليست هناك تعليقات:

إرسال تعليق

الموضوع المميز

تاثير استعمال Like على Performance الكويري في SQL Server

  نفترض كويري كما بالأسفل Select Id, FirstName, LastName,  JobDescription  From Employee where FristName Like '%hm%'

أكثر المواضيع زيارة