سبد (0)

حذف ایندکس های بدون استفاده

2- پیدا کردن ایندکس های بدون استفاده یا Unused Index

در مطلب قبل، در مورد ایندکس های تکراری صحبت شد، و متوجه شدید بدلیل اینکه نگهداری ایندکس ها هزینه بر است، بهتر است پایگاه داده را از وجود آنها پاک نماییم. اما در مورد ایندکس های بدون استفاده یا Unused Index ها نیز شرایط به همین صورت است. در واقع ایندکسی که مورد استفاده قرار نمی گیرد دارای هزینه نگهداری اند.

مثال: بعنوان مثال در جدول Users تعریف ایندکس روی فیلد Password یک کار بیهوده است، چون هرگز روی فیلد Password جستجو انجام نخواهد شد.


مثال عملی مربوط به ایندکس های بدون استفاده

Demo

USE AdventureWorks2012
GO
SELECT TOP 25
o.name AS ObjectName
, i.name AS IndexName
, i.index_id AS IndexID
, dm_ius.user_seeks AS UserSeek
, dm_ius.user_scans AS UserScans
, dm_ius.user_lookups AS UserLookups
, dm_ius.user_updates AS UserUpdates
, p.TableRows
, 'DROP INDEX ' + QUOTENAME(i.name)
+ ' ON ' + QUOTENAME(s.name) + '.' + QUOTENAME(OBJECT_NAME(dm_ius.OBJECT_ID)) AS 'drop statement'
FROM sys.dm_db_index_usage_stats dm_ius
INNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = i.OBJECT_ID
INNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_ID
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
INNER JOIN (SELECT SUM(p.rows) TableRows, p.index_id, p.OBJECT_ID
FROM sys.partitions p GROUP BY p.index_id, p.OBJECT_ID) p
ON p.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = p.OBJECT_ID
WHERE OBJECTPROPERTY(dm_ius.OBJECT_ID,'IsUserTable') = 1
AND dm_ius.database_id = DB_ID()
AND i.type_desc = 'nonclustered'
AND i.is_primary_key = 0
AND i.is_unique_constraint = 0
ORDER BY (dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups) ASC
GO

در مثال بالا برای پیدا کردن ایندکس های بدون استفاده از یک DMV بنام dm_db_index_usage_stats استفاده شده است.

توجه: اگر برای آزمایش کوئری بالا، یک ایندکس را در همین لحظه تعریف کردید و سپس کوئری بالا را روی پایگاه داده بلافاصله اجرا نمودید، به شما جواب نخواهد داد، برای بدست آوردن نتیجه ی مناسب، داده های پایگاه داده به اصطلاح باید بالا و پایین شوند.


در ادامه بحث Missing Index خواهید دید ...!

با خرید جلسه 6 از بسته آموزشی "افزایش کارایی پایگاه داده" مباحث بالا بصورت تکمیلی توضیح داده شده است.


دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 6
  • نام فایل ویدئو: 01
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (Unused Index) در ویدئو: 8:50


برای خرید و دانلود کامل آموزش پیشرفته SQL Server کلیک کنید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه