日期:2014-05-16 浏览次数:20412 次
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