我使用的是 SQL Server 2016 SP1 标准版。
dm_db_index_physical_stats 视图在大型数据库上非常慢。即使我指定了“有限”选项。
我使用视图来获取索引碎片,以确定在维护中是否应该执行 REBUILD 或 REORG。但随着数据库的增长,对 DMV dm_db_index_physical_stats 的调用需要越来越多的时间。在某些可能高达 1TB 的数据库上,查询 DMV 可能需要一个小时。(我没有停机时间,总是有连接到数据库的客户端在工作。)
所以我想知道是否有一种方法可以在不查询 DMV 的情况下了解索引碎片。
我将恢复评论部分中提出的重要建议:
简短的回答是不,您必须使用 DMV。
在整个数据库上使用 DMV 的一种可能替代方法是按表执行,但我需要为整个数据库执行此操作,并且我已经将索引维护拆分为多天,以便它尽可能适合维护窗户。
另一种选择是在另一台服务器上恢复数据库并在那里收集索引碎片。
我也可以尝试看看是否有一些未使用的索引,看看我是否可以删除一些。我发现这个查询非常有用,如果它可以为其他人服务。如果您看到没有读取和仅写入的索引,则意味着该索引仅在您在表中插入行时使用,而不会在 SELECT 查询中使用。然后,您可以分析并决定它是否有用并且应该保留。