You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQL语句,查询指定多张表的空间与行数统计信息?

查询指定多张表的统计信息解决方案

没问题,只需要调整原SQL里的表名匹配条件,就能同时查询指定的5张表的统计数据了。下面是修改后的完整语句:

USE myDB
GO
SELECT t.name AS TableName, s.name AS SchemaName, p.rows AS RowCounts, 
       SUM(a.total_pages) * 8 / 1024 AS TotalSpaceMB, 
       SUM(a.used_pages) * 8 / 1024 AS UsedSpaceMB, 
       (SUM(a.total_pages) - SUM(a.used_pages)) * 8 / 1024 AS UnusedSpaceMB
FROM sys.tables t
INNER JOIN sys.indexes i ON t.object_id = i.object_id
INNER JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE t.name IN ('表名1', '表名2', '表名3', '表名4', '表名5') -- 替换成你的5张表实际名称
  AND t.is_ms_shipped = 0 
  AND i.object_id > 255
GROUP BY t.name, s.name, p.rows
ORDER BY t.name;
GO

关键修改说明:

  • 把原语句中WHERE t.name = ('TestLog')替换成了t.name IN ('表名1', '表名2', ...),通过IN操作符可以一次性指定多个需要查询的表名,用逗号分隔即可。
  • 保留了原语句中t.is_ms_shipped = 0和i.object_id > 255的条件,确保不会查询到系统内置的表。

额外注意事项:

  • 如果你的表名包含空格、特殊字符或者数据库开启了大小写敏感,记得用方括号[]包裹表名,比如[Sales Order]、[User_Log_2024]。
  • 确保输入的表名和数据库中实际存在的表名完全一致,否则会过滤掉不存在的表,不会返回对应数据。

内容的提问来源于stack exchange,提问作者600vka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:46