SQLServer中的索引碎片处理
http://msdn.microsoft.com/zh-cn/library/ms189858.aspx 我工作中碰到一张表,有320万记录,数据表占用空间800多兆,所有索引碎片大于80%,甚至有100%,索引占用空间500兆,重新生成索引后占用空间减小到200多兆。 一个可以在SQL2005中测试的脚本 --drop database db_index_test --建立测试环境 create database db_index_test ?go use db_index_test go create table tbTest(rownum int identity(1,1),id varchar(100),date datetime) go create index index_id on tbTest(id) go --插入测试数据,并适当删除一部分数据 declare @i int set @i=1 while @i<10 begin ?insert into tbTest(id,date) select newid(),getdate() from syscolumns delete from tbTest where rownum%2=0 set @i=@i+1 end go --检查索引 SELECT avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'tbTest'),????? NULL,NULL,NULL) AS a???? JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id where name='index_id' go --重建索引 alter index index_id on tbTest rebuild go --检查索引 SELECT avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(),NULL) AS a???? JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id where name='index_id' --删除测试环境 go use master go drop database db_index_test go 在sql的客户端工具SQL Server Management Studio中也可以手动检查并重建索引 ? ? 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinjazz/archive/2008/06/25/2585493.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |