سؤال

لدي بعض الجداول التي بناء كجزء من التقرير التراكمي.لا حاجة لهم بعد ذلك على الإطلاق.ذكر أحدهم إلى اقتطاع لهم كما ستكون أسرع.

هل كانت مفيدة؟

المحلول

حذف السجلات من الجدول سجلات كل الحذف و ينفذ حذف المشغلات على السجلات المحذوفة.اقتطاع هو أكثر قوة الأمر أن يفرغ الجدول دون تسجيل كل صف.SQL Server يمنعك من اقتطاع الجدول مع مفاتيح خارجية الرجوع فيه ، وذلك بسبب الحاجة إلى التحقق من المفاتيح الخارجية في كل صف.

اقتطاع عادة بسرعة فائقة ، مثالية لتنظيف البيانات من جدول مؤقت.فإنه لا يحافظ على بنية الجدول لاستخدامها في المستقبل.

إذا كنت فعلا ترغب في إزالة الجدول التعاريف فضلا عن البيانات ببساطة إسقاط الجداول.

انظر هذه المقالة MSDN للحصول على مزيد من المعلومات

نصائح أخرى

إسقاط الجدول حذف الجدول.

اقتطاع الجدول يفرغ ذلك ، ولكن يترك هيكل البيانات في المستقبل.

إسقاط TRUNC تفعل أشياء مختلفة:

اقتطاع الجدول

يزيل كافة الصفوف من الجدول دون تسجيل الفرد الصف الحذف.اقتطاع الجدول مشابه حذف البيان لا يوجد فيها شرط ؛ ومع ذلك ، اقتطاع الجدول هو أسرع و يستخدم عدد أقل من نظام تسجيل المعاملات الموارد.

إسقاط الجدول

إزالة واحد أو أكثر من تعريفات الجدول وجميع البيانات والفهارس المشغلات ، القيود ، و إذن مواصفات تلك الجداول.

بقدر سرعة المعنية الفرق يجب أن تكون صغيرة.و على أي حال إذا كنت لا تحتاج إلى بنية الجدول في كل شيء ، بالتأكيد استخدام قطرة.

أعتقد أنك تعني الفرق بين حذف الجدول اقتطاع الجدول.

إسقاط الجدول

إزالة الجدول من قاعدة البيانات.

حذف الجدول

دون شرط حذف كافة الصفوف.إذا كان هناك الزناد والمراجع ثم هذا سوف عملية لكل صف.أيضا مؤشر سيتم تعديله إذا كان هناك واحد.

اقتطاع الجدول

تعيين عدد الصفوف الصفر و بدون تسجيل كل صف.أن العديد من أسرع الأخرى على حد سواء.

أيا من هذه الإجابة نشير إلى الفرق المهم عن هذه العمليات اثنين.إسقاط الجدول هو العملية التي يمكن أن يتم التراجع. ومع ذلك ، اقتطاع لا يمكن التراجع ['اقتطاع الجدول' يمكن التراجع كذلك].في هذه الطريقة إسقاط جدول كبير جدا يمكن أن تكون مكلفة للغاية إذا كان هناك العديد من الصفوف ، لأنها يجب أن تكون مسجل في مساحة مؤقتة في حال قررت لفة مرة أخرى.

عادة إذا كنت تريد التخلص من طاولة كبيرة سوف اقتطاع ذلك ، ثم أسقطه.بهذه الطريقة سوف تكون البيانات عارضنا بدون تسجيل و يمكن أن يكون الجدول انخفض ، و أن إسقاط سوف تكون مكلفة للغاية لأن البيانات لا يحتاج إلى تسجيل.

من المهم أن نشير على الرغم من أن اقتطاع فقط حذف البيانات ، وترك الطاولة ، بينما تنخفض في الواقع ، وحذف البيانات و الجدول نفسه.(على افتراض مفاتيح خارجية لا يمنع مثل هذا العمل)

اقتطاع الجدول يبقى كل ما تبذلونه من العمر الفهرسة وغيرها.إسقاط الجدول أن من الواضح التخلص من الجدول وتتطلب منك إعادة عليه في وقت لاحق.

إسقاط الجدول

DROP TABLE [table_name];

الأمر قطرة يستخدم لإزالة جدول من قاعدة البيانات.وهو DDL الأمر.جميع الصفوف, فهارس والامتيازات من الجدول كما سيتم إزالتها.إسقاط العملية لا يمكن التراجع.

حذف الجدول

DELETE FROM [table_name]
WHERE [condition];

DELETE FROM [table_name];

الأمر حذف عبارة DML الأمر.يمكن استخدامه لحذف كافة الصفوف أو بعض الصفوف من الجدول استنادا إلى الشرط المحدد في جملة WHERE.يتم تنفيذها باستخدام قفل صف, كل صف في الجدول مؤمن الحذف.الحفاظ على سجل المعاملات ، لذلك هو أبطأ من اقتطاع.حذف العمليات يمكن أن يتم التراجع.

اقتطاع الجدول

TRUNCATE TABLE [table_name];

باقتطاع الأمر يزيل جميع الصفوف من الجدول.لن السجل حذف كل صف, بدلا من ذلك فإنه يسجل deallocation من صفحات البيانات من الجدول ، مما يجعلها أسرع من حذف.يتم تنفيذها باستخدام الجدول قفل الجدول بأكمله مؤمن إزالة كافة السجلات.وهو DDL الأمر.اقتطاع العمليات لا يمكن التراجع.

قطرة يتخلص من الجدول تماما ، إزالة التعريف أيضا.اقتطاع يفرغ الجدول ولكن لا تحصل على التخلص من هذا التعريف.

اقتطاع الجدول يفرغ الجدول.إسقاط الجدول يحذفها تماما.أي واحد سوف تكون سريعة ، ولكن اسقاط فإنه من المرجح أن يكون أسرع (اعتمادا على قاعدة بيانات المحرك).

إذا كنت لا حاجة إليها بعد الآن إسقاط الأمر لا التبعثر المخطط.

حذف TableA بدلا من اقتطاع TableA?ثمة مفهوم خاطئ شائع هو أن يفعلوا نفس الشيء.لا لذلك.في الواقع ، هناك العديد من الاختلافات بينهما.

حذف تسجيل العملية على كل صف على حدة.وهذا يعني أن حذف كل صف يتم تسجيل وجسديا حذفها.

يمكنك حذف أي الصف الذي لن تنتهك القيد ، مع ترك المفتاح الخارجي أو أي contraint في المكان.

اقتطاع هو أيضا تسجيل العملية ، ولكن بطريقة مختلفة.اقتطاع بتسجيل deallocation من صفحات البيانات في البيانات موجود.على deallocation من صفحات البيانات يعني أن البيانات الخاصة بك الصفوف لا تزال موجودة فعلا في صفحات البيانات ، ولكن نطاقات تم وضع علامة عليها باعتبارها فارغة لإعادة استخدامها.هذا هو ما يجعل اقتطاع أسرع عملية لأداء فوق حذف.

لا يمكن اقتطاع جدول يحتوي على أي مفتاح قيود.سيكون لديك لإزالة contraints, اقتطاع الجدول تطبيق contraints.

اقتطاع سيتم إعادة تعيين أي هوية الأعمدة الافتراضية البذور القيمة.

اقتطاع يزيل جميع الصفوف ، ولكن ليس على الطاولة نفسها ، هو أساسا ما يعادل حذفها مع ليس فيها شرط ، ولكن عادة ما تكون أسرع.

لدي تصحيح أحد البيانات المذكورة أعلاه..."اقتطاع لا يمكن التراجع"

اقتطاع يمكن التراجع.هناك بعض الحالات عندما لا يمكنك القيام باقتطاع أو إسقاط الجدول ، مثل عندما يكون لديك الأجنبية المرجعية الرئيسية.مهمة مثل تقارير شهرية, ربما كنت مجرد قطرة الطاولة مرة واحدة لم أكن في حاجة إليها بعد الآن.إذا كنت تفعل التحديثات هذه التقارير في كثير من الأحيان ثم كنت على الأرجح الحفاظ على الطاولة بدلا من استخدام اقتطاع.

ويساعد هذا الأمل ، هنا بعض مزيد من المعلومات التي يجب أن تجد من المفيد...

الرجاء مراجعة المقالة التالية لمزيد من التفاصيل:http://sqlblog.com/blogs/denis_gobo/archive/2007/06/13/1458.aspx

أيضا, لمزيد من التفاصيل على حذف مقابلاقتطاع راجع هذه المقالة:http://www.sql-server-performance.com/faq/delete_truncate_difference_p1.aspx

وذلك بفضل!جيف

اقتطاع الجدول وظيفيا مطابقة حذف البيان لا WHERE:إزالة كافة الصفوف في الجدول.ولكن اقتطاع الجدول أسرع و يستخدم عدد أقل من النظام سجل المعاملات الموارد مما حذف.

حذف البيان يزيل الصفوف واحد في وقت يسجل دخول في سجل المعاملات لكل حذف الصف.اقتطاع الجدول يزيل البيانات deallocating صفحات البيانات المستخدمة تخزين جدول بيانات ، الصفحة deallocations يتم تسجيلها في سجل المعاملات.

اقتطاع الجدول يزيل جميع الصفوف من الجدول ولكن بنية الجدول و أعمدة, القيود, فهارس وهكذا على البقاء.العداد تستخدم من قبل الهوية الصفوف الجديدة هو إعادة البذور للعمود.إذا كنت ترغب في الإبقاء على هوية مضادة ، استخدام حذف بدلا من ذلك.إذا كنت ترغب في إزالة الجدول تعريف لها ، إسقاط الجدول البيان.

لا يمكنك استخدام اقتطاع الجدول على الجدول المشار إليه بواسطة مفتاح خارجي القيد;بدلا من, استخدام حذف بيان دون جملة WHERE.لأن اقتطاع الجدول لا تسجيل ، فإنه لا يمكن تنشيط الزناد.

اقتطاع الجدول يجوز استخدامها على الجداول المشاركة في فهرستها عرض.

من http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx

في SQL القياسية ، إسقاط الجدول يزيل الجدول الجدول المخطط - اقتطاع يزيل جميع الصفوف.

الإجابات هنا متابعة المباراة على السؤال ولكن أنا سوف أجيب على السؤال الذي لم يسأل."يجب استخدام اقتطاع أو حذف؟" إذا كنت تقوم بإزالة كافة الصفوف من الجدول, سوف عادة ما ترغب في اقتطاع لأنه أسرع بكثير.لماذا هو أسرع بكثير?على الأقل في حالة من أوراكل ، فإنه يعيد العلامة المائية.هذا هو في الأساس dereferencing البيانات ويسمح db إعادة استخدامها لشيء آخر.

حذف مقابل اقتطاع

  1. على DELETE بيان يزيل الصفوف في وقت واحد و سجلات الدخول في الصفقة سجل كل حذف الصف. TRUNCATE TABLE يزيل البيانات عن طريق deallocating البيانات صفحات تستخدم لتخزين بيانات الجدول والسجلات الصفحة فقط deallocations في سجل المعاملات
  2. يمكننا استخدام WHERE شرط في DELETE ولكن في TRUNCATE لا يمكنك استخدام الأمر
  3. عندما DELETE بيان يتم تنفيذها باستخدام قفل صف, كل صف في الجدول مقفل للحذف. TRUNCATE TABLE دائما أقفال الجدول صفحة ولكن ليس كل صف
  4. بعد DELETE بيان تنفيذ الجدول يمكن أن لا تزال تحتوي على صفحات فارغة.إذا كان حذف العملية لا تستخدم تأمين الجدول, الجدول (كومة) سوف تحتوي على العديد من فارغة صفحات.الفهارس عملية الحذف يمكن أن تترك فارغة صفحات خلف ، على الرغم من أن هذه
    صفحات سوف يكون deallocated بسرعة قبل عملية تنظيف الخلفية
  5. TRUNCATE TABLE يزيل كافة الصفوف من الجدول ، ولكن بنية الجدول و الأعمدة ، القيود الفهارس ، وهكذا تبقى
  6. DELETE بيان لا RESEED عمود الهوية ولكن TRUNCATE بيان RESEEDS على IDENTITY العمود
  7. لا يمكنك استخدام TRUNCATE TABLE على الجداول:
    1. يتم الرجوع إليها من قبل FOREIGN KEY القيد.(يمكنك اقتطاع الجدول الذي يحتوي على المفاتيح الخارجية أن المراجع نفسها.)
    2. المشاركة في عرض مفهرسة.
    3. يتم نشر باستخدام النسخ المتماثل المعاملات أو النسخ المتماثل دمج
  8. TRUNCATE TABLE لا يمكن تنشيط الزناد لأن العملية لا تسجيل الفردية الصف الحذف

Delete

Delete حذف صفوف الجدول و إرجاع عدد الصفوف التي يتم حذفها من الجدول.في هذا البيان ، ونحن نستخدم where حذف البيانات من الجدول

  • حذف البيان أبطأ من اقتطاع البيان لأنه حذف السجلات واحدا تلو الآخر

اقتطاع البيان

اقتطاع بيان حذف أو إزالة كافة الصفوف من الجدول.

  • وهو أسرع من حذف البيان لأنه حذف كافة السجلات من الجدول
  • اقتطاع بيان عدم عودة أي من الصفوف يتم حذفها من الجدول

انخفاض بيان

انخفاض بيان حذف جميع السجلات وكذلك هيكل الجدول

حذف

الأمر DELETE يستخدم لإزالة الصفوف من الجدول.جملة WHERE يمكن استخدامها فقط إزالة بعض الصفوف.إذا لا يوجد فيها الشرط يتم تحديد جميع الصفوف سيتم إزالتها.بعد إجراء عملية حذف تحتاج إلى COMMIT أو العودة إلى الحالة السابقة الصفقة لجعل التغيير الدائم أو التراجع عنه.

اقتطاع

اقتطاع يزيل كافة الصفوف من الجدول.العملية لا يمكن التراجع ...مثل TRUCATE هو أسرع و لا تستخدم الكثير من التراجع الفضاء حذف.

من: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

قطرة إسقاط الجدول بأكمله وجميع هيكلها

اقتطاع حذف كافة الصفوف من الجدول وهو يختلف عن حذف كما حذف الفهارس الصفوف

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top