gpt4 book ai didi

sql - 如何快速检测并解决数据库的SQL Server索引碎片?

转载 作者:行者123 更新时间:2023-12-03 01:42:02 25 4
gpt4 key购买 nike

我遇到过这样的情况:随着添加更多记录,我对许多 SQL Server 数据库表的数据库操作变得非常慢(向具有 100 万条记录的表进行单次插入需要 5 秒)。

我估计这可能是由于我的数据库中表上的碎片索引造成的,因为我有许多表使用(并且需要使用)主键聚集索引的 uniqueidentifier 类型。

如何评估是否存在这种情况,以及如果存在任何碎片问题,如何解决碎片问题(可能每次部署一次)?

我想要一个适用于 SQL Server 2005 及更高版本的解决方案(我专门在 Azure 数据库 (12.0.2000.8) 中使用 SQL Server)。

最佳答案

检查表上的碎片百分比

SELECT a.index_id, 
NAME,
avg_fragmentation_in_percent,
fragment_count,
avg_fragment_size_in_pages
FROM sys.Dm_db_index_physical_stats(Db_id('dbName'), Object_id('tableName'),
NULL,
NULL, NULL) AS a
INNER JOIN sys.indexes b
ON a.object_id = b.object_id
AND a.index_id = b.index_id

要修复碎片,请重建或重新组织表上的索引

ALTER INDEX ALL ON table_name REBUILD 

或者

ALTER INDEX index_name ON table_name REBUILD 

-- 重组

ALTER INDEX ALL ON table_name REORGANIZE

或者

ALTER INDEX index_name ON table_name REORGANIZE

或者

DBCC DBREINDEX ('table_Name')

https://learn.microsoft.com/en-us/sql/relational-databases/indexes/reorganize-and-rebuild-indexes

关于sql - 如何快速检测并解决数据库的SQL Server索引碎片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43683716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com