SQL SERVER查询数据库索引碎片
时间: 2025-04-17 19:28:38 浏览: 44
### 如何在 SQL Server 中查询数据库索引碎片
为了评估索引碎片的程度,可以利用 `sys.dm_db_index_physical_stats` 动态管理函数 (DMF),该函数返回有关表或视图的索引和分区的数据页级别的信息。此 DMF 是一种高效的方式,能够帮助管理员了解索引的状态并决定何时应该采取措施优化性能。
下面是一个示例 T-SQL 脚本,用于获取当前数据库内所有用户表上的索引碎片统计:
```sql
SELECT
OBJECT_NAME(ips.object_id) AS TableName,
i.name AS IndexName,
ips.index_type_desc,
ips.avg_fragmentation_in_percent,
ips.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL , 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.database_id = DB_ID()
AND ips.alloc_unit_type_desc = 'IN_ROW_DATA'
ORDER BY avg_fragmentation_in_percent DESC;
```
上述脚本会显示平均碎片百分比以及页面数量等重要指标[^3]。当检测到较高的碎片水平时,通常建议对于低于 30% 的碎片率采用 ALTER INDEX ... REORGANIZE 命令来进行在线重组;而对于超过 30% 的严重碎片,则更适合使用带有 ONLINE=ON 参数选项的 ALTER INDEX ... REBUILD 来完全重建索引[^4]。
阅读全文
相关推荐














