如何在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(可能在其他版本中)可以执行以下操作:
- 在对象资源pipe理器中右键单击数据库名称。
- 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在另一个线程中引用答案,非常有用。
获取数据库中所有表的大小