求Microsoft Fabric Warehouse中空表(0行)的高效查询语句
在Microsoft Fabric Warehouse中快速查找空表的方法
针对你在Fabric Warehouse中需要批量排查9000张表中空表的需求,可通过查询系统视图实现高效统计,替代低效的UNION ALL逐个查询方案:
推荐查询语句
SELECT s.name AS schema_name, t.name AS table_name, SUM(p.rows) AS row_count FROM sys.tables t JOIN sys.schemas s ON t.schema_id = s.schema_id JOIN sys.dm_db_partition_stats p ON t.object_id = p.object_id WHERE p.index_id IN (0, 1) -- 仅统计堆表或聚集索引的行数,避免重复计算 GROUP BY s.name, t.name HAVING SUM(p.rows) = 0 -- 筛选出行数为0的空表 ORDER BY s.name, t.name;
方案说明
- 效率优势:该查询直接读取系统维护的元数据和分区统计信息,无需对每张表执行全表扫描,相比
UNION ALL逐个COUNT(*)的方式,速度提升极为明显,适合处理数千张表的场景。 - 准确性:
sys.dm_db_partition_stats中的rows字段是系统自动维护的近似行数,但对于判断表是否为空(行数=0)的场景完全准确,不存在误差。 - 替代原Azure DW方案:Fabric Warehouse未保留Azure SQL DW中的
dbo.vTableSizes视图,因此需改用标准的SQL Server兼容系统视图实现相同需求。
内容的提问来源于stack exchange,提问作者SRP
相关产品推荐
相关产品推荐

