在SQL Server 2012中基于碎片结果进行INDEX重建和重组

时间:2015-10-18 01:42:45

标签: sql sql-server-2012

我知道有一些脚本可以检测索引碎片,并根据结果REBUILD或REORGANIZE。我已经尝试了一些没有结果的SQL Server 2005。 你能帮忙建议吗?

1 个答案:

答案 0 :(得分:0)

查看TechNet上提供的脚本:https://gallery.technet.microsoft.com/scriptcenter/Check-SQL-Server-a-a5758043,说明如何检查碎片索引。

SELECT 
    OBJECT_NAME(ind.OBJECT_ID) AS TableName,
    ind.name AS IndexName, 
    indexstats.index_type_desc AS IndexType,
    indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats
INNER JOIN sys.indexes ind 
    ON ind.object_id = indexstats.object_id
    AND ind.index_id = indexstats.index_id
WHERE indexstats.avg_fragmentation_in_percent > 30
ORDER BY indexstats.avg_fragmentation_in_percent DESC

将百分比从30更改为您认为合适的任何内容。我倾向于容忍高达30%的碎片作为起点。对于高于此的碎片,我更喜欢重建而不是重组。你可以查看Kendra Little / Brent Ozar关于重建与重组的博客http://www.brentozar.com/archive/2013/09/index-maintenance-sql-server-rebuild-reorganize/