日期:2014-05-16  浏览次数:20412 次

SQL Server 重建索引|索引重组|索引的碎片检查 (MSSQL个人笔记之数据库优化之路 六<SQL2005以上>)
SQL Server 重建索引|索引重组|索引的碎片检查  (SQL2005以上)    
    
/********************************************************************************    
 *主题:SQL Server 重建索引|索引重组|索引的碎片检查  (SQL2005以上)
 *说明:本文是个人学习的一些笔记和个人愚见    
 *      有很多地方你可能觉得有异议,欢迎一起讨论    
    
 *作者:Stephenzhou(阿蒙)    
 *日期: 2012.08.24    
 *Mail:szstephenzhou@163.com    
 *另外:转载请著名出处。    
**********************************************************************************/ 


什么是索引碎片呢?

由于表上有过度地插入、修改和删除操作,索引页被分成多块就形成了索引碎片,如果索引碎片严重,那扫描索引的时间就会变长,甚至导致索引不可用,因此数据检索操作就慢下来了。

 

 

检查索引碎片

 

SELECT OBJECT_NAME(dt.object_id)      , 
  
        si.name                        , 
  
        dt.avg_fragmentation_in_percent, 
  
        dt.avg_page_space_used_in_percent 
  
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 dt --does not return information about heaps 
  
        INNER JOIN sys.indexes si 
  
        ON     si.object_id = dt.object_id 
  
           AND si.index_id  = dt.index_id 


执行结果如下:

 

 

/*

                                                                                                                                            avg_fragmentation_in_percent avg_page_space_used_in_percent
-------------------------------------------------------- ---------- ---------------------------- ------------------------------
consume_vewt01                                                                                                                   pk_Aount   0                            0
tb_Security                                                                                                                      PK__tb_Sec 0                            0
tb1                                                                                                                              PK__tb1__3 0                            1.54435384235236
tb1                                                                                                                              PK__tb1__3 50                           70.5831480108723
tb1                                                                                                                              PK__tb1__3 0                            0.296515937731653
tb1                                                                                                                              PK__tb1__3 0                            1.54435384235236
tb1                                                                                                                              PK__tb1__3 0                            1.54435384235236
consume_vewt02                                                                                                                   pk_Aount2  0                            3.26167531504818
consume_vewt03                                                                                                                   pk_Aount3  0                            0.76599950580677
consume_vewt04                                                                                                                   pk_Aount4  0                            0
sysarticles                                                                                                                      c1sysartic 0                            30.5782060785767
sys