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