SQLServer数据库随着使用时间的增长,会让人觉得越来越慢,这个和你平时没有合理的维护计划有关系,定期处理索引碎片是一个必不可少的工作内容之一。 具体信息参考msdn
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(), 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 use master go drop database db_index_test
go
在sql的客户端工具SQL Server Management Studio中也可以手动检查并重建索引
分享到:
相关推荐
对't_exam' 表执行DBCC SHOWCONTIG,结果如下: - 扫描页数.....................................: 20229 - 扫描扩展盘区数.......以上结果显示:逻辑扫描碎片和扩展盘区扫描碎片都非常大,需要对索引碎片进行处理。
程序员或者运维工作中经常会遇到表的索引碎片过多而导致的数据处理缓慢,锁表等情况,针对这种情况制作了一个监控看板,可以监控不同数据库ip下的表索引碎片情况,可以报警提示出来,上传内容包含源代码,希望C#...
让索引有序:用SQL Server 2005的新方法来移除索引碎片.pdf
比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处。 获取索引碎片...
处理模式/数据差异没有麻烦 比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处...
比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处。 获取索引碎片...
9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...
书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...
书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...
处理模式/数据差异没有麻烦 比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处...
使用以下脚本查看数据库索引碎片的大小情况: 代码如下:DBCC SHOWCONTIG WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS 以下使用脚本来处理维护作业: 代码如下:/*Perform a ‘USE ’ to select the database ...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...
9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
索引碎片--维护阶段定期检测索引是否有碎片,如果过多就要对索引重新组织和重建 索引失效或者没有使用索引,例如: or语句使用了没有索引的字段 对有索引的字段进行了某些函数操作 避免对索引字段进行...