SQLServer中的索引碎片处理

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

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

【 tulaoshi.com - 编程语言 】

  SQLServer数据库随着使用时间的增长,会让人觉得越来越慢,这个和你平时没有合理的维护计划有关系,定期处理索引碎片是一个必不可少的工作内容之一。 具体信息参考msdn

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

  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 @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

  --检查索引

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

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

  --检查索引

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

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

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

延伸阅读
正确的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能。索引是提高数据查询最有效的方法,也是最难全面掌握的技术,因为正确的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能。 索引的管理成本 1、存储索引的磁盘空间 2、执行数据修改操作...
标签: 服务器
MAC解决Spotlight 的‘索引中问题   某些人品不好的人有时候会遇到如上图的问题:当你想用 Spotlight 找点什么东西时,它永远告诉你它正在忙着索引,而且完全不给出一个预计完成时间。这个时候你就得考虑它是否出了点什么问题了,可以使用删除所有现有索引的方法来尝试修复: 用有管理员权限的用户登录,打开 terminal,输入...
关于 xml ,难以理解的不是 SQLServer 提供的函数,而是对 xml 本身的理解,看似很简单的文件格式,处理起来却是非常困难的。本文只是初探一下而已。 详见 SQLServer 联机帮助: 主题 说明 query() 方法( xml 数据类型) 此方法用于对 XML 实例进行查询。 value() 方法( xml 数据类型) 此方法用于从 XML 实例检索 SQL 类型的值。 exi...
标签: SQLServer
经过测试,可以顺利实现 数据库 结构的初始化和数据的单向同步(也就是订阅服务器的数据可以及时更新为发布服务器的数据)。 准备工作:  数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数...
本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说...

经验教程

554

收藏

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