如何在SQL中查找表的大小?

如何在SQL中查找表的大小?

SQL Server: –

sp_spaceused 'TableName' 

或在pipe理工作室: 右键单击表 – >属性 – >存储

MySQL的: –

 SELECT table_schema, table_name, data_length, index_length FROM information_schema.tables 

SYBASE: –

 sp_spaceused 'TableName' 

Oracle: – 如何计算表中的大小在oracle中

结合ratty和Haim的post(包括评论)的答案我已经拿出了这个,这对于SQL Server来说似乎是迄今为止最优雅的:

 -- DROP TABLE #tmpTableSizes CREATE TABLE #tmpTableSizes ( tableName varchar(100), numberofRows varchar(100), reservedSize varchar(50), dataSize varchar(50), indexSize varchar(50), unusedSize varchar(50) ) insert #tmpTableSizes EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" select * from #tmpTableSizes order by cast(LEFT(reservedSize, LEN(reservedSize) - 4) as int) desc 

这将按照保留大小的顺序为您提供所有表的列表,从最大到最小排列。

SQL Server提供了一个内置的存储过程,您可以运行它来轻松显示表的大小,包括索引的大小

 sp_spaceused 'Tablename' 

查询(修改https://stackoverflow.com/a/7892349/1737819 )以GB查找自定义名称表的大小。 你可以试试这个,用你的表的名字replace“YourTableName”。

 SELECT t.NAME AS TableName, p.rows AS RowCounts, CONVERT(DECIMAL,SUM(a.total_pages)) * 8 / 1024 / 1024 AS TotalSpaceGB, SUM(a.used_pages) * 8 / 1024 / 1024 AS UsedSpaceGB , (SUM(a.total_pages) - SUM(a.used_pages)) * 8 / 1024 / 1024 AS UnusedSpaceGB 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 = 'YourTable' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 GROUP BY t.Name, s.Name, p.Rows ORDER BY UsedSpaceGB DESC, t.Name 

SQL Server提供了一个内置的存储过程,你可以运行它来轻松地显示表的大小,包括索引的大小……这可能会让你感到惊讶。

句法:

  sp_spaceused 'Tablename' 

请参阅:

http://www.howtogeek.com/howto/database/determine-size-of-a-table-in-sql-server/

你的大小是否意味着表格中的logging数量? 在这种情况下:

 SELECT COUNT(*) FROM your_table_name 

我知道,在SQL 2012(可能在其他版本中)可以执行以下操作:

  1. 在对象资源pipe理器中右键单击数据库名称。
  2. select报告>标准报告>按顶部表格的磁盘使用情况。

这将给你一个前1000名表的列表,然后你可以通过数据大小等命令。

在PostgreSQL中:

 SELECT pg_size_pretty(pg_relation_size('tablename')); 

这是一个简单的查询,如果你只是想find最大的表。

  -- Find largest table partitions SELECT top 20 obj.name, LTRIM (STR ( sz.in_row_data_page_count * 8, 15, 0) + ' KB') as Size, * FROM sys.dm_db_partition_stats sz inner join sys.objects obj on obj.object_id = sz.object_id order by sz.in_row_data_page_count desc 

你可以通过Marc_s在另一个线程中引用答案,非常有用。

获取数据库中所有表的大小