zoukankan      html  css  js  c++  java
  • 優化數據庫之重建整理索引

    -- 運行環境

    /*

    Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59  

    Copyright (c) 1988-2005 Microsoft Corporation  Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

    */

    USE master

    go

    IF OBJECT_ID ( 'SP_RefreshIndex' , 'P' ) IS NOT NULL

        DROP PROCEDURE SP_RefreshIndex

    go

    CREATE PROCEDURE SP_RefreshIndex

    AS

    IF db_id ()< 5

        RETURN

    PRINT N' 優化 DB:' + DB_Name ()

    SET NOCOUNT ON ;

    DECLARE @command varchar ( 8000);

     

    DECLARE partitions CURSOR FOR

    SELECT

        CASE WHEN a. avg_fragmentation_in_percent< 30.0 THEN 'ALTER INDEX ' + d. Name + ' ON ' + c. NAME + '.' + b. NAME + ' REORGANIZE '

              ELSE 'ALTER INDEX [' + d. Name + '] ON [' + c. NAME + '].[' + b. NAME + '] REBUILD' END +

        CASE WHEN partitioncount> 1 THEN ' PARTITION=' + rtrim ( a. partition_number)+ ';' ELSE ';' END

    FROM sys.dm_db_index_physical_stats ( DB_ID (), NULL, NULL , NULL, 'LIMITED' ) AS a

        INNER JOIN sys.objects AS b ON a. object_id = b. object_id

        INNER JOIN sys.schemas AS c ON c. schema_id = b. schema_id

        INNER JOIN sys.indexes AS d ON d. object_id = a. object_id AND d. index_id= a. index_id

        INNER JOIN ( SELECT object_id , index_id, partitioncount= COUNT (*) FROM sys.partitions GROUP BY object_id , index_id) AS e ON e. object_id = a. object_id AND e. index_id= a. index_id

    WHERE a. avg_fragmentation_in_percent > 10.0 AND a. index_id > 0 AND d. Name IS NOT NULL

     

    OPEN partitions;

    FETCH NEXT   FROM partitions INTO @command;

    WHILE @@FETCH_STATUS = 0

    BEGIN

        EXEC ( @command);

        FETCH NEXT FROM partitions INTO @command;

    END

    CLOSE partitions;

    DEALLOCATE partitions;

     

    GO

    exec sp_ms_marksystemobject 'SP_RefreshIndex' -- 標記為系統存儲過程

    go

     

    EXEC sp_msforeachdb 'use [?] exec SP_RefreshIndex' -- 優化整個實例所有庫

     

     

     

  • 相关阅读:
    存储器类型区分
    语言基础(25):容器与算法
    X11-forwarding
    语言基础(24):句柄类
    Markdown(2):流程图
    剑指offer-树的子结构
    剑指offer-判断链表是否有环
    剑指offer-求链表的中间结点
    剑指offer-合并两个排序的链表
    剑指offer-反转链表
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463074.html
Copyright © 2011-2022 走看看