برای مشاهده یافته ها از کلید Enter و برای خروج از کلید Esc استفاده کنید.

استفاده از Top در دستور Delete و کاربرد آن

خیلی وقت ها پیش می آید یک کوئری جهت حذف داده از جدول خود نوشته اید و با اینکه ریکاوری مدل دیتابیس simple است ولی زمان اجرا با خطای پر شدن transaction log روبه رو می شوید در اینجا می توان با یک تکنیک ساده و آن هم استفاده از top در کوئری خود داده ها را بدون مشکل در چند مرحله حذف نمایید. برای حذف داده ها به این صورت می توان از دو روش زیر استفاده نمود:

  • استفاده از Top در دستور Delete
  • استفاده از CTE

۱- استفاده از Top در دستور Delete

می توان به صورت مستقیم در دستور delete کلمه top را استفاده و به صورت تعدادی یا درصدی داده های جدول را حذف کرد. در زیر شکل کلی دستور آمده است:

DELETE TOP (top_value) [PERCENT]
FROM table
[WHERE conditions]

همانطور که مشخص است وجود پرانتز بعد از Top در دستور delete اجباری است و همچنین قسمت percent و شرط کوئری قسمت های اختیاری هستند.

مثال: دستور زیر ۱۰۰۰۰ رکورد از جدول TransactionHistory با شرط تاریخ کوچکتر از سال ۲۰۱۶ را حذف می نماید:

DELETE TOP(10000)
FROM Production.TransactionHistory
WHERE TransactionDate < '2016-01-01 00:00:00.000'

مثال: دستور زیر ۲۵ درصد رکوردها که در شرط کوئری صدق می کنند را حذف می نماید:

DELETE TOP(25) PERCENT
FROM Production.TransactionHistory
WHERE TransactionDate < '2016-01-01 00:00:00.000'

۲- استفاده از CTE

یک روش جالب استفاده از CTE است که می توان دو مثال بالا را به صورت زیر پیاده سازی و اجرا نمود:

مثال اول:

;WITH cte AS
(
	SELECT TOP(10000) *
	FROM Production.TransactionHistory 
	WHERE TransactionDate < '2016-01-01 00:00:00.000'	 
)
DELETE cte

مثال دوم:

;WITH cte AS
(
	SELECT TOP(25) PERCENT *
	FROM Production.TransactionHistory 
	WHERE TransactionDate < '2016-01-01 00:00:00.000'	 
)
DELETE cte

همانطور که در ابتدای مقاله اشاره شد یکی از کاربردهای اصلی استفاده از Top در حذف داده ها، جلوگیری از رشد بی رویه لاگ فایل است که با روش های بالا و به صورت چند مرتبه اجرا کردن کوئری می توان به این مهم دست یافت.


امیدوارم این آموزش برای خوانندگان گرامی مفید واقع شود. لطفا با ارائه نظرات ، سوالات و پیشنهادات خود به بالا بردن کیفیت مطالب آموزشی و همچنین ایجاد دلگرمی برای ادامه مسیر آموزش به ما کمک نمایید. همچنین می توانید با عضویت در کانال تلگرام IranSQL از جدیدترین مقالات و فیلم های آموزشی با خبر شوید.

اشتراک گذاری با دیگران
  •  
  •  
  •  
  •  
  •