SQLServer中的索引碎片处理

2016-02-19 16:04 4 1 收藏

下面请跟着图老师小编一起来了解下SQLServer中的索引碎片处理,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

  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

  --插入测试数据,并适当删除一部分数据

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

declare @i int
set @i=1
while @i10
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 --重建索引

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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中也可以手动检查并重建索引

来源:https://www.tulaoshi.com/n/20160219/1610999.html

延伸阅读
代码如下: USE Demo GO /* 将表Code的列String中的值提取放到Record表中 String 中字符类型为 dsddddd,2222222,222221,3 其中最后一位为标记对于Record表中的BiaoJi 前面的以','分割的是值对应Record表中Value */ GO DROP PROC proc_split_Code GO CREATE PROC proc_split_Code AS BEGIN SET NOCOUNT ON DECLARE @Count INT...
标签: SQLServer
获取一个SQLServer上的所有数据库信息 用存储过程 sp_databases  在查询分析其中执行命令exec sp_databases  结果:master 14464 NULL model 1280 NULL msdb 14336 NULL Northwind 4352 NULL pubs 2560 NULL Store 1912 NULL tempdb 8704&nb...
关于 xml ,难以理解的不是 SQLServer 提供的函数,而是对 xml 本身的理解,看似很简单的文件格式,处理起来却是非常困难的。本文只是初探一下而已。 详见 SQLServer 联机帮助: 主题 说明 query() 方法( xml 数据类型) 此方法用于对 XML 实例进行查询。 value() 方法( xml 数据类型) 此方法用于从 XML 实例检索 SQL 类型的值。 exi...
标签: SQLServer
经过测试,可以顺利实现 数据库 结构的初始化和数据的单向同步(也就是订阅服务器的数据可以及时更新为发布服务器的数据)。 准备工作:  数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数...
1、你可以用SQLCMD执行交互式动作,如: C:sqlcmdsqlcmd 1 SELECT name from sys.databases 2 GO 你也可以试着键入如下命令,现实服务器列表 1:ServerList SERVERS: WUYZ 1如果想看其他命令的使用,可以键入:Help /? 2、执行SQL脚本文件 你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例...

经验教程

655

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部