SQL Server-获取表的大致大小
在生产环境中,发布SQL Server-获取表的大致大小,sql,sql-server,Sql,Sql Server,在生产环境中,发布SELECT COUNT可能不是一个好主意-它可能会影响性能,具体取决于您的数据库引擎。在Oracle中,如果我想了解表的大小,而不必使用计数,我可以执行以下操作: SELECT table_name, num_rows, last_analyzed FROM all_tables WHERE table_name = 'MY_TABLE_NAME'; 如果启用了Oracle的表分析,这将检索它们。虽然计数不精确,但它可以让我知道一个表有多大,以防我需
SELECT COUNT
可能不是一个好主意-它可能会影响性能,具体取决于您的数据库引擎。在Oracle中,如果我想了解表的大小,而不必使用计数
,我可以执行以下操作:
SELECT
table_name,
num_rows,
last_analyzed
FROM all_tables
WHERE table_name = 'MY_TABLE_NAME';
如果启用了Oracle的表分析,这将检索它们。虽然计数不精确,但它可以让我知道一个表有多大,以防我需要查询它(最后一列让我知道近似值有多大)
如何在SQL Server中执行类似操作?(相关-这对SQL Server是必要的吗?Oracle必须逐行计数,因此避免了此问题。)
谢谢 您可以调用
sp\u spaceused“table\u name”
如果要对所有表执行此操作,请将其包装在sp\MSforeachtable
中:
sp_MSforeachtable 'sp_spaceused ''[?]'''
不带任何参数调用sp_spaceused将显示数据库大小。您也可以使用management studio
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是受支持的版本,则应具有此dmv
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('MY_TABLE_NAME')
AND (index_id=0 or index_id=1);
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('MY_TABLE_NAME')
AND (index_id=0 or index_id=1);