zoukankan      html  css  js  c++  java
  • [转] SQL Server 2005索引碎片整理SQL语句

    /*******************************************************/
    /*         功能:SQL Server 2005索引碎片整理            */
    /*              逻辑碎片>=30重建索引,<30重新组织索引   */
    /*         作者:贾桂军                                 */
    /*         日期:2008年6月11日                          */
    /*******************************************************/
    /***********SQL Server 2005索引碎片整理*****************/
    /**使用方法:将需要整理索引碎片的数据库设置为当前数据库**/
    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.'+rtrim(@tname)+' rebuild'
      end
      else   --如果碎片小于30,重新组织索引
      begin
       set @STR='alter index '+rtrim(@Iname)+' on dbo.'+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

    /*
    --查看指定表的索引情况
    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('t2'),null,null,'limited') s
      on s.object_id=i.object_id and s.index_id=i.index_id

    */
  • 相关阅读:
    升级linux bash
    vim关键字自动补全
    linux bash shell之变量替换::=句法、=句法、:句法、句法、=?句法、?句法、:+句法、+句法
    使用Bash编写Linux Shell脚本7.复合命令
    使用Bash编写Linux Shell脚本5.变量
    使用Bash编写Linux Shell脚本8.调试和版本控制
    Perl之单引号\双引号的字符串直接量
    linux bash shell 中的单引号和双引号
    使用Bash编写Linux Shell脚本6.表达式
    Vim的行号、语法显示等设置,即.vimrc文件的配置
  • 原文地址:https://www.cnblogs.com/chillsrc/p/1549999.html
Copyright © 2011-2022 走看看