国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

索引碎片自動整理存儲過程

2024-07-21 02:50:42
字體:
來源:轉載
供稿:網友
索引碎片自動整理存儲過程

背景:

下面是2014年3月15日的SQL PASS上大神提供的重建索引GuideLine:When To Rebuild vs. Defrag•< 10% do nothing•10% <> 30% defrag/reorganize•30%+ rebuild•And don’t do anything if the index has < 1000 pages

----------------------------------------------------------------------

根據此GuideLine,本人制作了自動重建索引的存儲過程分享給大家:

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER OFFGO-- =============================================-- Author:        <AjianGG>-- Create date:    <2014/03/18>-- Description:    <Removing Fragmentation>-- =============================================CREATE PROCEDURE [dbo].[proc_rebuild_index]    @ret    INT OUTPUTASSET NOCOUNT ONBEGIN    DECLARE @fldDefragFragment INT = 10;    DECLARE @fldRebuildFragment INT = 30;    DECLARE @fldMinPageCount INT = 1000;    DECLARE @fldTable VARCHAR(256);    DECLARE @fldIndex VARCHAR(256);    DECLARE @fldPercent INT;    DECLARE @Sql       VARCHAR(256);    BEGIN TRY        SET @ret = -1;                -- 獲取索引碎片狀況        DECLARE curIndex CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR            SELECT                  TBL.NAME TABLE_NAME                ,IDX.NAME INDEX_NAME                ,AVGP.AVG_FRAGMENTATION_IN_PERCENT            FROM SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(), NULL,NULL, NULL, 'LIMITED') AS AVGP             INNER JOIN SYS.INDEXES AS IDX              ON AVGP.OBJECT_ID = IDX.OBJECT_ID             AND AVGP.INDEX_ID = IDX.INDEX_ID             INNER JOIN SYS.TABLES AS TBL              ON AVGP.OBJECT_ID = TBL.OBJECT_ID            INNER JOIN SYS.DM_DB_PARTITION_STATS PS             ON AVGP.OBJECT_ID = PS.OBJECT_ID            AND AVGP.INDEX_ID = PS.INDEX_ID             WHERE                AVGP.INDEX_ID >= 1             AND AVGP.AVG_FRAGMENTATION_IN_PERCENT >= @fldDefragFragment            AND PS.RESERVED_PAGE_COUNT >= @fldMinPageCount;        -- 打開游標        OPEN curIndex;        -- 獲取游標        FETCH NEXT FROM curIndex        INTO @fldTable,@fldIndex,@fldPercent;        WHILE @@FETCH_STATUS = 0            BEGIN                                --碎片率大于30,重建索引                IF @fldPercent >= @fldRebuildFragment                    BEGIN                        SET @Sql = 'ALTER INDEX ' + @fldIndex + ' ON ' + @fldTable + ' REBUILD';                        EXEC(@Sql);                    END                ELSE                --碎片率小于30,重組索引                    BEGIN                        SET @Sql = 'ALTER INDEX ' + @fldIndex + ' ON ' + @fldTable + ' REORGANIZE';                        EXEC(@Sql);                    END                -- 獲取游標                FETCH NEXT FROM curIndex                INTO @fldTable,@fldIndex,@fldPercent;                            END                    -- 關閉游標        CLOSE curIndex;        DEALLOCATE curIndex;                    SET @ret = 0;    END TRY    BEGIN CATCH        SET @ret = -1;        DECLARE @ErrorMessage    nvarchar(4000);        DECLARE @ErrorSeverity    int;        DECLARE @ErrorState        int;        SELECT              @ErrorMessage = ERROR_MESSAGE()            , @ErrorSeverity  = ERROR_SEVERITY()            , @ErrorState = ERROR_STATE();        RAISERROR( @ErrorMessage                            , @ErrorSeverity                            , @ErrorState);        RETURN;    END CATCH;END


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临安市| 互助| 桓台县| 沛县| 古蔺县| 五峰| 汾阳市| 长葛市| 通江县| 绵阳市| 平塘县| 平昌县| 泰来县| 六安市| 莱州市| 敖汉旗| 连城县| 安顺市| 科技| 江北区| 准格尔旗| 临潭县| 嘉定区| 百色市| 恭城| 张北县| 罗城| 资中县| 合阳县| 共和县| 禄丰县| 长寿区| 五原县| 苗栗县| 五指山市| 克山县| 中卫市| 延川县| 涿州市| 天峨县| 井冈山市|