国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普宁市| 分宜县| 舒兰市| 上虞市| 崇州市| 博客| 陆川县| 根河市| 绍兴市| 丹东市| 延津县| 湘潭县| 黑水县| 泗水县| 余姚市| 吉林省| 鄢陵县| 赤城县| 靖安县| 石台县| 阿坝县| 海南省| 天峻县| 江西省| 芷江| 阜平县| 宁海县| 仪征市| 沁源县| 奇台县| 塔城市| 桃源县| 宜章县| 阳朔县| 商河县| 老河口市| 漠河县| 黄石市| 河池市| 道孚县| 乳山市|