एक आम सहमति है कि जैसे ही सूचकांक विखंडन 5 (कभी-कभी 10%) से अधिक तक पहुंच जाता है, आपको अपने सूचकांकों ("डीफ़्रेग्मेंट") को पुनर्गठित करना चाहिए, और जब यह 30% से अधिक हो जाए तो आपको उन्हें पूरी तरह से पुनर्निर्माण करना चाहिए (कम से कम यही संख्या है I' कई जगहों पर वकालत सुनी है).
मिशेल उफ़र्ड (उर्फ "एसक्यूएल फ़ूल") में एक स्वचालित अनुक्रमणिका डीफ़्रैग स्क्रिप्ट<है /ए> , जो उन सटीक सीमाओं का उपयोग यह तय करने के लिए करता है कि किसी अनुक्रमणिका को कब पुनर्व्यवस्थित या पुनर्निर्माण करना है।
यह भी देखें इंडेक्स के पुनर्निर्माण के लिए ब्रैड मैक्गी की युक्तियाँ अनुक्रमणिका पुनर्निर्माण से निपटने के तरीके के बारे में कुछ अच्छे विचारों और सुझावों के साथ।
मैं यहां इस स्क्रिप्ट का उपयोग करता हूं (याद नहीं कर सकता कि मुझे यह कब से मिला - जो कोई भी था:बहुत धन्यवाद! वास्तव में सहायक सामग्री) किसी दिए गए डेटाबेस में आपके सभी सूचकांकों पर सूचकांक विखंडन प्रदर्शित करने के लिए:
SELECT
t.NAME 'Table name',
i.NAME 'Index name',
ips.index_type_desc,
ips.alloc_unit_type_desc,
ips.index_depth,
ips.index_level,
ips.avg_fragmentation_in_percent,
ips.fragment_count,
ips.avg_fragment_size_in_pages,
ips.page_count,
ips.avg_page_space_used_in_percent,
ips.record_count,
ips.ghost_record_count,
ips.Version_ghost_record_count,
ips.min_record_size_in_bytes,
ips.max_record_size_in_bytes,
ips.avg_record_size_in_bytes,
ips.forwarded_record_count
FROM
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') ips
INNER JOIN
sys.tables t ON ips.OBJECT_ID = t.Object_ID
INNER JOIN
sys.indexes i ON ips.index_id = i.index_id AND ips.OBJECT_ID = i.object_id
WHERE
AVG_FRAGMENTATION_IN_PERCENT > 0.0
ORDER BY
AVG_FRAGMENTATION_IN_PERCENT, fragment_count