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