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

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

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

瀏覽:16日期: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)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MsSQL
主站蜘蛛池模板: 免费视频网站一级人爱视频 | 亚洲精彩 | 国产免费一区不卡在线 | 日韩精品在线免费观看 | 国产精品三 | 日韩一区二区三区不卡视频 | 日本色网址| 国产高清精品毛片基地 | 久久精品久久精品国产大片 | 欧美一区=区三区 | 成人在线免费观看视频 | 国产精品亚洲成在人线 | 国产精品视频视频久久 | 91精品久久 | 欧美日韩国产亚洲一区二区三区 | 18视频网站在线观看 | 99九九精品国产高清自在线 | 欧美日韩在线观看一区二区 | 2020精品极品国产色在线观看 | 亚洲精品在线影院 | 综合欧美视频一区二区三区 | 中文字幕亚洲视频 | 欧美三级欧美成人高清www | 国产高清一区二区三区视频 | 久久国产一片免费观看 | 男女午夜性爽快免费视频不卡 | 国产亚洲精品自在线观看 | 欧美色视频日本片免费高清 | 免费一区二区三区四区 | 国产年成美女网站视频免费看 | 国产精品视频一区二区三区 | 欧美特黄一区二区三区 | 在线免费观看精品 | 午夜精品视频在线观看美女 | 欧美高清性刺激毛片 | 亚洲精品美女 | 视频一区二区三区在线 | 美女视频黄色在线观看 | 美女被免费网站在线软件 | 国产片一级 | 欧美特欧美特级一片 |