我使用以下查询检查数据库的一个表中的索引中的碎片
SELECT a.object_id, object_name(a.object_id) AS TableName,
a.index_id, name AS IndedxName, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats
(DB_ID (N'prod-db')
, OBJECT_ID(N'[dbo].[Channel]')
, NULL
, NULL
, NULL) AS a
INNER JOIN sys.indexes AS b
ON a.object_id = b.object_id
AND a.index_id = b.index_id;
GO
并发现其上市PK_Channel
3次,
TableName | index_id | IndedxNameobject_idavg_fragmentation_in_percent | ||
---|---|---|---|---|
通道 | 1 | PK_Channel|||
通道 | 1 | PK_Channel | 1557580587 | 0 |
通道 | 1 | PK_Channel | 1557580587 | 0 |
信道 | 3 | idx_Channel_RegisteredTime1557580587 | 00429737859905458 |
您只有一个索引,在B-树中有多个级别。
来自sys.dm_db_index_physical_stats
:的文档
对于索引,每个分区中B树的每个级别都返回一行。
这意味着dm_db_index_physical_stats
将为B树的每个级别返回一行。您正在将其加入sys.indexes
中的单个行。