乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      SQL Server 索引碎片整理

       新進(jìn)小設(shè)計(jì) 2022-02-24

      索引碎片整理的四種方法:

      1)刪除索引并重建

      2)使用 DROP_EXISTING 語(yǔ)句重建索引

      3)使用 ALTER INDEX REBUILD 語(yǔ)句重建索引

      4)使用 ALTER INDEX REORGANIZE 重新組織索引

      --1.查看碎片
      SELECT  DB_NAME() AS DatbaseName ,
              SCHEMA_NAME(o.Schema_ID) AS SchemaName ,
              OBJECT_NAME(s.[object_id]) AS TableName ,
              i.name AS IndexName ,
              ROUND(s.avg_fragmentation_in_percent, 2) AS [Fragmentation %] ,
              CASE WHEN avg_fragmentation_in_percent > 30 THEN '嚴(yán)重碎片,索引需要重建'
                   WHEN avg_fragmentation_in_percent >= 5
                        AND avg_fragmentation_in_percent < 30 THEN '輕度碎片,索引需要重新組織'
                   ELSE '正常狀態(tài)'
              END 提示
      FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) s
              INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
              INNER JOIN sys.objects o ON i.object_id = O.object_id
      ORDER BY [Fragmentation %] DESC  
       
      --2.整理碎片(建議在空閑時(shí)間運(yùn)行,尤其不要在生產(chǎn)環(huán)境運(yùn)行)
      SET NOCOUNT ON
      DECLARE @Objectid INT ,
          @Indexid INT ,
          @schemaname VARCHAR(100) ,
          @tablename VARCHAR(300) ,
          @ixname VARCHAR(500) ,
          @avg_fip FLOAT ,
          @command VARCHAR(4000)
      DECLARE IX_Cursor CURSOR
      FOR
          SELECT  A.object_id ,
                  A.index_id ,
                  QUOTENAME(SS.NAME) AS schemaname ,
                  QUOTENAME(OBJECT_NAME(B.object_id, B.database_id)) AS tablename ,
                  QUOTENAME(A.name) AS ixname ,
                  B.avg_fragmentation_in_percent AS avg_fip
          FROM    sys.indexes A
                  INNER JOIN sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL,
                                                            NULL, 'LIMITED') AS B ON A.object_id = B.object_id
                                                                    AND A.index_id = B.index_id
                  INNER JOIN SYS.OBJECTS OS ON A.object_id = OS.object_id
                  INNER JOIN sys.schemas SS ON OS.schema_id = SS.schema_id
          WHERE   B.avg_fragmentation_in_percent > 10
                  AND B.page_count > 20
                  AND A.index_id > 0
                  AND A.IS_DISABLED <> 1
                  --AND OS.name='book'
      ORDER BY    avg_fip DESC ,
                  tablename ,
                  ixname
      OPEN IX_Cursor
      FETCH NEXT FROM IX_Cursor INTO @Objectid, @Indexid, @schemaname, @tablename,
          @ixname, @avg_fip
      WHILE @@FETCH_STATUS = 0 
          BEGIN 
              --碎片率>5%或<=30%,索引重組
              IF @avg_fip < 30.0 
                  SET @command = N'ALTER INDEX ' + @ixname + N' ON ' + @schemaname
                      + N'.' + @tablename + N' REORGANIZE ';
                      
              --碎片率>=30%,索引重建
              IF @avg_fip >= 30.0
                  AND @Indexid = 1 
                  BEGIN
                      IF EXISTS ( SELECT  *
                                  FROM    SYS.columns
                                  WHERE   OBJECT_ID = @Objectid
                                          AND max_length IN ( -1, 16 ) ) 
                          SET @command = N'ALTER INDEX ' + @ixname + N' ON '
                              + @schemaname + N'.' + @tablename + N' REBUILD ';
                      ELSE 
                          SET @command = N'ALTER INDEX ' + @ixname + N' ON '
                              + @schemaname + N'.' + @tablename + N' REBUILD '
                              + N' WITH (ONLINE = ON)';
                  END
              IF @avg_fip >= 30.0
                  AND @Indexid > 1 
                  BEGIN 
                      IF EXISTS ( SELECT  *
                                  FROM    SYS.index_columns IC
                                          INNER JOIN SYS.columns CS ON CS.OBJECT_ID = IC.OBJECT_ID
                                                                    AND CS.column_id = IC.column_id
                                  WHERE   IC.OBJECT_ID = @Objectid
                                          AND IC.index_id = @Indexid
                                          AND CS.max_length IN ( -1, 16 ) ) 
                          SET @command = N'ALTER INDEX ' + @ixname + N' ON '
                              + @schemaname + N'.' + @tablename + N' REBUILD ';
                      ELSE 
                          SET @command = N'ALTER INDEX ' + @ixname + N' ON '
                              + @schemaname + N'.' + @tablename + N' REBUILD '
                              + N' WITH (ONLINE = ON)';
                  END
              --打印命令,單獨(dú)執(zhí)行
              PRINT @command
              
              --直接執(zhí)行命令
              --EXEC(@command)
       
              FETCH NEXT FROM IX_Cursor INTO @Objectid, @Indexid, @schemaname,@tablename, @ixname, @avg_fip
          END 
      CLOSE IX_Cursor
      DEALLOCATE IX_Cursor 

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多