您当前的位置: 首页 » mssql » 通过SQL查看碎片情况并重建索引

通过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

上述查询语句会检查出哪些数据表和索引超过7个页,并且它们的碎片率达到了20%。再通过重建索引使得碎片率降到最低。

alter index 索引名 on 数据名 rebuild

或者:

dbcc dbreindex('表名','''',0)

0表示用之前定义的填充因子。

这里要做一下补充的就是,索引碎片除了内部碎片还有外部碎片,如果整个库的碎片都非常多的话,整个库的性能也是有所下降的。

留下脚印压缩包密码:sosuo8
名字:
全部评论:
loading...
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“ 通过SQL查看碎片情况并重建索引 ”的原作者,若侵犯您的版权,请与我联系!联系方法:email:ahuinan@21cn.com  QQ:106494262
文章档案
  • 作者:佚名
  • 来源:转载
  • 日期:2013/8/24 13:46:00
  • 点击:loading...
网友投票(您觉得这篇文章怎样?)
loadding...请稍侯......