SQL Server - 获取表的大致大小

标签 sql sql-server

在生产中,发出 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/

相关文章:

mysql - 在sql中使用外键查询

mysql - 仅当另一行中存在值时才选择一行

php - 如何使用 SQL 服务器安装 wordpress

sql-server - 用于处理多列中的 NULL 的 SSIS 表达式

sql - 如何在 Toad for Oracle 中显示当前日期和时间?

mysql - 如何从MySQL表中获取多列具有相同值的所有行?

sql - 检测oracle表中所有在每一行中具有相同值的列

java - 使用 JDBC 获取多个结果集不起作用

sql-server - 如何在 DBeaver 中创建数据库备份并恢复它?

c# - Notification Services 自定义传递 channel DLL 信任问题