SQL Server

Výpis všech indexů a jejich interní a externí fragmentace

Zjištění míry fragmentace indexů napříč je základní předpoklad pro volbu vhodné strategie optimalizace indexů pomocí rebuild/reorganize operací. Všechny podstatné informace lze získat využitím systémové funkce sys.dm_db_index_physical_stats() a jejím spojením se systémovými pohledy, které nám poskytnou dodatečné informace nutné pro identifikaci indexu.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO

SELECT  o.name TableName, ips.index_id IndexId, i.name IndexName, 
        ips.avg_fragmentation_in_percent AS ExtFragmentation,
        ips.avg_page_space_used_in_percent AS IntFragmentation
FROM    ( SELECT object_id, index_id, 
                 avg_fragmentation_in_percent, avg_page_space_used_in_percent
          FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED')
          WHERE index_id <> 0
        ) AS ips
        INNER JOIN sys.indexes i ON i.object_id = ips.object_id AND i.index_id = ips.index_id
        INNER JOIN sys.all_objects o ON ips.object_id = o.object_id
ORDER BY avg_fragmentation_in_percent DESC
Přehled indexů s interní a externí fragmentací

Přehled indexů s interní a externí fragmentací – příklad po spuštění nad msdb

Leave a Reply

Your email address will not be published. Required fields are marked *