sql查看所有表大小的方法


在SQL中,查看所有表的大小通常依赖于所使用的数据库系统(如MySQL, PostgreSQL, SQL Server等),因为不同的数据库系统有不同的系统表和函数来存储表的大小信息。以下是一些常见数据库系统中查看所有表大小的方法:

### MySQL

对于MySQL,你可以通过查询`information_schema`数据库中的`TABLES`表来获取表的大小信息。


SELECT 
    table_name AS `Table`, 
    round(((data_length + index_length) / 1024 / 1024), 2) AS `Size in MB` 
FROM information_schema.TABLES 
WHERE table_schema = "your_database_name"
ORDER BY (data_length + index_length) DESC;

请将`your_database_name`替换为你的数据库名。

### PostgreSQL

在PostgreSQL中,你可以使用`pg_relation_size`和`pg_total_relation_size`函数来获取表的大小信息。


SELECT 
    tablename AS "Table",
    pg_size_pretty(pg_total_relation_size('"' || tablename || '"')) AS "Size"
FROM 
    pg_tables
WHERE 
    schemaname = 'public' -- 或者其他schema名
ORDER BY 
    pg_total_relation_size('"' || tablename || '"') DESC;

### SQL Server

在SQL Server中,你可以使用`sp_spaceused`存储过程来查看表的空间使用情况。


EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?';"

这将为数据库中的每个表执行`sp_spaceused`,显示其大小和空间使用情况。

### 注意

- 替换示例中的数据库名、表名或schema名以匹配你的实际环境。

- 上述方法提供了表的大小信息,但请注意,这些大小信息(尤其是当表包含大量数据时)可能需要一些时间才能检索完成。

- 在执行任何查询之前,请确保你有足够的权限来访问`information_schema`、`pg_tables`等系统表或执行`sp_spaceused`等系统存储过程。