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' -- 優化整個實例所有庫

     

     

     

  • 相关阅读:
    Linux下GCC生成和使用静态库和动态库详解(二)
    make linux内核
    gdb
    GCC动态库和静态库混合使用
    gcc g++ Linux下动态库_静态库
    makefile
    linux线程函数大全
    C++ 中的插入迭代器以及其迭代器适配器
    gcc
    android ScrollView中嵌套GridView,ListView只显示一行的解决办法
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463074.html
Copyright © 2011-2022 走看看