دستور TRUNCATE و DELETE در SQL و تفاوت های آن ها

دستور TRUNCATE و DELETE در SQL

تفاوت دستور TRUNCATE و DELETE در SQL

دستور TRUNCATE و DELETE از دستورات پر کاربرد در زبان SQL و هوش تجاری می باشند که برای حذف ردیف ها از جداول استفاده می شوند.

دستورDelete در SQL Server

ما از دستور DeleteدرSQL Server برای حذف رکوردها از جدول استفاده می کنیم. می‌توانیم تمام رکوردها را حذف کنیم یا از عبارت Where برای حذف رکوردهای مطابق با شرط ها استفاده کنیم.

دستورTruncate در SQL Server

Truncate یک دستور زبان تعریف داده (DDL) یا Data Defrnition Language است. تمام ردیف های جدول را حذف می کند. SQL Server داده های یک جدول را در Pages ذخیره می کند. دستور truncate با جدا کردن Pages، ردیف ها را حذف می کند. این یک ورودی برای عدم تخصیص pages در گزارش تراکنش ایجاد می کند. حذف هر ردیف را در گزارش تراکنش ثبت نمی کند.

ما نمی توانیم هیچ شرطی را در دستورTruncate تعیین کنیم. در سطح بالا، می‌توانید دستور truncateرا شبیه به دستور Delete بدون بند Where در نظر بگیرید. جدول و pages را به جای یک ردیف قفل می کند.

تفاوت دستور TRUNCATE و DELETE

این 2 دستور تفاوت هایی را با هم دارند که در ادامه به تفاوت های آنها می پردازیم.

  1. سرعت دستور Truncate بیشتر از سرعت دستور Delete می باشد.
  2. دستور Delete در هنگام پاک کردن ردیف ها، در LOG FILE، ردیف به ردیف را لاگ می کند اما دستور Truncate این کار را نمی کند.
  3. اگر در جدول مربطه ستون (Identity) یا همان AI داشته باشیم، زمانی که از دستور Truncate استفاده می کنیم کل حافظه آزاد می شود و این شمارنده ریست می شود اما دستورDelete حافظه را آزاد نمی کند و سطر بعدی که درج می شود، شمارنده ستون Identity در ادامه آخرین شماره درج می شود.
  4. دستور Delete شرط می پذیرد ( مثلا رکورد با Id برابر1000 را میخواهیم پاک کنیم) اما دستورTruncate شرط پذیر نیست و کل دیتای جدول را پاک می کند.
  5. بعد از دستور Delete میتوان از Commit و Roll Back استفاده کرد، اما برای دستور Truncate  این کار امکان پذیر نیست و برگشت ناپذیر است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

مطالب پیشنهادی