set nocount on
--使用游标重新组织指定库中的索引,消除索引碎片
--R_T层游标取出当前数据库所有表
declare R_T cursor
for select name from sys.tables
declare @T varchar(50)
open r_t
fetch next from r_t into @t
while @@fetch_status=0
begin
--R_index游标判断指定表索引碎片情况并优化
declare R_Index cursor
for select t.name,i.name,s.avg_fragmentation_in_percent from sys.tables t
join sys.indexes i on i.object_id=t.object_id
join sys.dm_db_index_physical_stats(db_id(),object_id(@T),null,null,'limited') s
on s.object_id=i.object_id and s.index_id=i.index_id
declare @TName varchar(50),@IName varchar(50),@avg int,@str varchar(500)
open r_index
fetch next from r_index into @TName,@Iname,@avg
while @@fetch_status=0
begin
if @avg>=30 --如果碎片大于30,重建索引
begin
set @str='alter index '+rtrim(@Iname)+' on dbo.'+quotename(rtrim(@tname))+' rebuild'
end
else --如果碎片小于30,重新组织索引
begin
set @STR='alter index '+rtrim(@Iname)+' on dbo.'+quotename(rtrim(@tname))+' reorganize'
end
print @str
exec (@str) --执行
fetch next from r_index into @TName,@Iname,@avg
end
--结束r_index游标
close r_index
deallocate r_index
fetch next from r_t into @t
end
--结束R_T游标
close r_t
deallocate r_t
set nocount off
转自:
http://blog.csdn.net/wzhibin/archive/2010/04/23/5520761.aspx做了一些小的修改
分享到:
相关推荐
SqlServer索引碎片整理脚本,提据库查询效率,很有用。
microsoft sql server 索引碎片整理,三种方案,第二种方案经过验证,能大大提高数据库重建索引速度。260GB数据库,联机模式下最多一个半小时搞定
Sql server批量查询碎片率高的索引及自动重建脚本
SQL Index Console是用于检测SQL Server索引碎片和重建/重组索引以除去碎片的实用程序。 设置 特征 检测索引碎片 获取索引的详细列表,包括类型,大小,碎片数量和其他属性。 检测索引和表碎片,包括聚集索引碎片...
比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处。 获取索引碎片...
处理模式/数据差异没有麻烦 比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处...
比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处。 获取索引碎片...
第9章 SQLServer存储和索引结构 9.1 SQLServer存储机制 9.1.1 数据库 9.1.2 区段 9.1.3 页 9.1.4 行 9.1.5 稀疏列 9.2 理解索引 9.2.1 平衡树(B.树) 9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 ...
使用以下脚本查看数据库索引碎片的大小情况: 代码如下:DBCC SHOWCONTIG WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS 以下使用脚本来处理维护作业: 代码如下:/*Perform a ‘USE ’ to select the database ...
处理模式/数据差异没有麻烦 比较不同SQLServer实例中的数据并生成同步脚本。 管理源代码管理中的数据库更改 做一个管理源控制中的数据库更改的做法。通过查看更改历史记录,在不同修订版本和合并之间导航,获得好处...
第9章 SQLServer存储和索引结构 9.1 SQLServer存储机制 9.1.1 数据库 9.1.2 区段 9.1.3 页 9.1.4 行 9.1.5 稀疏列 9.2 理解索引 9.2.1 平衡树(B.树) 9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 ...
第9章 SQLServer存储和索引结构 9.1 SQLServer存储机制 9.1.1 数据库 9.1.2 区段 9.1.3 页 9.1.4 行 9.1.5 稀疏列 9.2 理解索引 9.2.1 平衡树(B.树) 9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 ...
SQL索引管理器 该工具使您可以快速找出索引的状态,并发现需要维护的数据库。 您可以通过UI进行维护,也可以生成T-SQL脚本以在SSMS中运行。 主要特点 快速描述引擎 多个数据库扫描 有关重建或重组的建议 碎片结果...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
项目升级数据库由SQL2000升级到2008R2,今天对数据库表进行碎片扫描,发现有些表碎片较大,于是决定重建索引,MSDN联机帮助是最好的老师,将相关脚本摘录备后查
SQLAgentScriptRebuildIndexes.sql 是我每晚作为 SQL 代理作业运行的脚本,它扰乱平均碎片大于 1.2% 的索引并跟踪碎片以确定和设置填充因子。 该脚本仍在不断发展,可能每天都在变化。 我正在努力将这两个脚本放入...
red-gate 的sqlserver运维脚本。比较经典。--列出sql实例下所有数据库的最后一次备份类型 和当前备份类型 排除tempdb数据库,--列出单个数据库里所有的索引碎片等等
索引碎片--维护阶段定期检测索引是否有碎片,如果过多就要对索引重新组织和重建 索引失效或者没有使用索引,例如: or语句使用了没有索引的字段 对有索引的字段进行了某些函数操作 避免对索引字段进行...
可用性组信息查找活动锁在计划缓存中查找密钥查找在PlanCache中查找长期运行的查询在PlanCache中查找最昂贵的查询在PlanCache中查找查询的计划在PlanCache中查找隐式转换查询在一段时间内测量IO延迟和吞吐量索引使用...