通过SQL查看碎片情况并重建索引
DECLARE @DatabaseName sysname
SET @DatabaseName = 'ElongDB'
SELECT O.name as TableName,i.name AS IndexName,ips.index_type_desc,
ips.avg_fragmentation_in_percent,ips.page_count,ips.fragment_count,
ips.avg_page_space_used_in_percent
from sys.dm_db_index_physical_stats(
DB_ID(@DatabaseName),
NULL,NULL,NULL,'Sampled')ips
JOIN sys.objects o on ips.object_id = o.object_id
JOIN sys.indexes i On (ips.object_id=i.object_id) And (ips.index_id = i.index_id)
where (ips.page_count >=7) and (ips.avg_fragmentation_in_percent>20)
order by o.name,i.name
SET @DatabaseName = 'ElongDB'
SELECT O.name as TableName,i.name AS IndexName,ips.index_type_desc,
ips.avg_fragmentation_in_percent,ips.page_count,ips.fragment_count,
ips.avg_page_space_used_in_percent
from sys.dm_db_index_physical_stats(
DB_ID(@DatabaseName),
NULL,NULL,NULL,'Sampled')ips
JOIN sys.objects o on ips.object_id = o.object_id
JOIN sys.indexes i On (ips.object_id=i.object_id) And (ips.index_id = i.index_id)
where (ips.page_count >=7) and (ips.avg_fragmentation_in_percent>20)
order by o.name,i.name
上述查询语句会检查出哪些数据表和索引超过7个页,并且它们的碎片率达到了20%。再通过重建索引使得碎片率降到最低。
alter index 索引名 on 数据名 rebuild
或者:
dbcc dbreindex('表名','''',0)
0表示用之前定义的填充因子。
这里要做一下补充的就是,索引碎片除了内部碎片还有外部碎片,如果整个库的碎片都非常多的话,整个库的性能也是有所下降的。
上一篇:MSSQL大批量数据量优化一
名字:
全部评论:
loading...
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“
通过SQL查看碎片情况并重建索引
”的原作者,若侵犯您的版权,请与我联系!联系方法:email:ahuinan@21cn.com QQ:106494262
文章档案
- 作者:佚名
- 来源:转载
- 日期:2013/8/24 13:46:00
- 点击:loading...
网友投票(您觉得这篇文章怎样?)
请稍侯......
