色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

SQLServer 表的索引碎片查詢和處理

瀏覽:125日期:2023-05-02 10:03:18
目錄
  • 1.查看索引的碎片率
  • 2.reorganize索引
  • 3.rebuild索引
  • 4.rebuild表上所有的索引
  • 5.rebuild數(shù)據(jù)庫中所有的索引  

1.查看索引的碎片率

SELECT object_name(ips.object_id) AS TableName, ips.index_id, name AS IndexName, 
avg_fragmentation_in_percent,db_name(ips.database_id) AS DatabaseName
FROM sys.dm_db_index_physical_stats
    (Db_id(DB_NAME())
, NULL
, NULL
, NULL
, NULL) AS ips
INNER JOIN sys.indexes AS SI ON ips.object_id = SI.object_id AND ips.index_id = SI.index_id
WHERE ips.avg_fragmentation_in_percent > 5 AND SI.index_id <> 0

索引的碎片率低于5%或者,索引的頁數(shù)少于1000,可以忽略;
索引碎片率在5%-30%之間的,建議reorganize;
索引碎片率大于30%的,建議rebuild。

2.reorganize索引

alter index [索引名] on [dbo].[表名] reorganize;

3.rebuild索引

alter index [索引名] on [dbo].[表名] rebuild;

4.rebuild表上所有的索引

alter index all on [dbo].[表名] rebuild;

5.rebuild數(shù)據(jù)庫中所有的索引  

USE [數(shù)據(jù)庫名]
GO
DECLARE @NoOfPartitions BIGINT;
DECLARE @objectid INT;
DECLARE @indexid INT;
DECLARE @idxname NVARCHAR(255);
DECLARE @objname NVARCHAR(255);
DECLARE @partitionnum BIGINT;
DECLARE @schemaname NVARCHAR(255);
DECLARE @partitions BIGINT;
DECLARE @frag FLOAT;
DECLARE @statement VARCHAR(8000);
-- checking existance of the table that we create for temporary purpose
IF OBJECT_ID("defrag_work", "U") IS NOT NULL
  DROP TABLE defrag_work;
-- Copy the fragmented indexes data into defrag_work table
-- All the indexes that has fragmentation < 5 are getting stored into our work table
SELECT  [object_id] AS objectid ,
index_id AS indexid ,
partition_number AS partition_no ,
avg_fragmentation_in_percent AS frag
INTO    defrag_work
FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, "LIMITED")
WHERE   avg_fragmentation_in_percent >5.0 and index_id > 0;
-- cursor to process the list of partitions
DECLARE partitions CURSOR
FOR
    SELECT  *
    FROM    defrag_work;
-- Open the cursor.
OPEN partitions;
-- Looping through the partitions
FETCH NEXT
   FROM partitions
   INTO @objectid, @indexid, @partitionnum, @frag;
WHILE @@FETCH_STATUS = 0
    BEGIN;
SELECT  @objname= QUOTENAME(so.name) ,
@schemaname = QUOTENAME(ss.name)
FROM    sys.objects AS so
JOIN sys.schemas AS ss ON ss.schema_id = so.schema_id
WHERE   so.object_id = @objectid;
SELECT  @idxname = QUOTENAME(name)
FROM    sys.indexes
WHERE   object_id = @objectid
AND index_id = @indexid;
SELECT  @NoOfPartitions = COUNT(*)
FROM    sys.partitions
WHERE   object_id = @objectid
AND index_id = @indexid;
/*
Let"s say N = fragmentation percentage
N <= 5 = IGNORE
5 < N < 30 = REORGANIZE
N > 30 = REBUILD
*/
IF (@frag < 30.0) -- @frag > 5 is already filtered in our first query, so we need that condition here
    BEGIN;
SELECT  @statement = "ALTER INDEX " + @idxname + " ON "
+ @schemaname + "." + @objname + " REORGANIZE";
IF @NoOfPartitions > 1
    SELECT  @statement = @statement + " PARTITION="
    + CONVERT (CHAR, @partitionnum);
EXEC (@statement);
    END;
IF @frag >= 30.0
    BEGIN;
SELECT  @statement = "ALTER INDEX " + @idxname + " ON "
+ @schemaname + "." + @objname + " REBUILD";
IF @NoOfPartitions > 1
    SELECT  @statement = @statement + " PARTITION="
    + CONVERT (CHAR, @partitionnum);
EXEC (@statement);
    END;
PRINT "Executed " + @statement;
FETCH NEXT FROM partitions INTO @objectid, @indexid, @partitionnum,
    @frag;
    END;
-- Close and deallocate the cursor.
CLOSE partitions;
DEALLOCATE partitions;
-- drop the table
IF OBJECT_ID("defrag_work", "U") IS NOT NULL
  DROP TABLE defrag_work;

到此這篇關(guān)于SQLServer 表的索引碎片查詢和處理的文章就介紹到這了,更多相關(guān)SQLServer 表索引碎片內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MsSQL
主站蜘蛛池模板: 二区在线观看 | 欧美成人免费午夜影视 | 香蕉视频1024 | 97在线免费观看视频 | 色手机在线| 国产精品综合久成人 | 国产a久久精品一区二区三区 | 欧美一级免费观看 | 国产一级二级三级毛片 | 九九久久精品这里久久网 | 亚洲一区二区三区精品影院 | 欧美精品免费在线 | 亚洲国产欧美在线人成精品一区二区 | 久久亚洲国产成人影院 | 久久精品免费i 国产 | 天天都色| 国产九区 | 91精品国产美女福到在线不卡 | 国产一级片儿 | 纯欧美一级毛片免费 | 午夜在线社区视频 | 日韩中文在线观看 | 99久久精品久久久 | 美国成人免费视频 | 国产男女免费完整视频 | 精品毛片视频 | 久久99国产精一区二区三区! | 99视频网址 | 久久久久久国产精品三级 | 日本理论片免费高清影视在线观看 | 久热精品免费视频 | 毛片免费观看网址 | 亚洲精品在线免费观看视频 | 在线视频中文字幕 | 日本aa级片 | 国产在线视频欧美亚综合 | 欧美成人性色区 | 99久久精品国产一区二区小说 | 老湿菠萝蜜在线看 | 91无套极品外围在线播放 | 中国的毛片 |