在生产中,发出 SELECT COUNT
可能是一个坏主意 - 它可能会影响性能,具体取决于您的数据库引擎。在 Oracle 中,如果我想了解表的大小而不必求助于 COUNT
,我可以执行以下操作:
SELECT
table_name,
num_rows,
last_analyzed
FROM all_tables
WHERE table_name = 'MY_TABLE_NAME';
这将检索 Oracle 的表分析(如果已启用)。虽然计数并不准确,但它可以让我了解表有多大,以防我需要查询它(last_analyzed 列让我知道该近似值有多旧)。
如何在 SQL Server 中执行类似的操作? (相关 - 这对于 SQL Server 来说是必要的吗?Oracle 必须逐行计数,因此可以避免。)
谢谢!
最佳答案
您也可以使用管理工作室
Right Click on table -> Properties -> Storage
或者您可以使用如下查询:
sp_spaceused 'TableName'
要为所有表获取它,您可以像 tihs 一样使用它:
CREATE TABLE #tmp
(
tableName varchar(100),
numberofRows varchar(100),
reservedSize varchar(50),
dataSize varchar(50),
indexSize varchar(50),
unusedSize varchar(50)
)
insert #tmp
EXEC sp_MSforeachtable @cmd="EXEC sp_spaceused '?'"
select * from #tmp
关于SQL Server - 获取表的大致大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788540/