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

    */
  • 相关阅读:
    TUXEDO启动常见错误和解决方法 动常见错误和解决方法
    tuxedo远程客户端无法访问类故障(持续更新ing)
    ORA-00845: MEMORY_TARGET not supported on this system
    vim使用方法
    GP_CAT:209: ERROR: Write error 27, file /app/dir/dom/log/ULOG.011508
    txuedo TMS_ORACLE启动失败
    type类型定义
    oralce
    登录指定端口的ftp_server
    Failed to initialize NVML: Driver/library version mismatch
  • 原文地址:https://www.cnblogs.com/chillsrc/p/1549999.html
Copyright © 2011-2022 走看看