sqlserver 怎样查看每个表占用多少内存(硬盘空间)

打印 上一主题 下一主题

主题 548|帖子 548|积分 1644

效果如下


记得把数据库名称更换一下
  1. USE 数据库名称; -- 这里修改数据库名称
  2. GO
  3. -- 创建一个临时表来存储空间使用情况
  4. CREATE TABLE #TableSizes (
  5.     table_name NVARCHAR(128),
  6.     row_count INT,
  7.     reserved_size VARCHAR(50),
  8.     data_size VARCHAR(50),
  9.     index_size VARCHAR(50),
  10.     unused_size VARCHAR(50)
  11. );
  12. -- 游标遍历所有表,并将空间使用情况插入临时表
  13. DECLARE @table_name NVARCHAR(128);
  14. DECLARE @sql NVARCHAR(4000);
  15. DECLARE table_cursor CURSOR FOR
  16. SELECT table_name
  17. FROM information_schema.tables
  18. WHERE table_type = 'BASE TABLE';
  19. OPEN table_cursor;
  20. FETCH NEXT FROM table_cursor INTO @table_name;
  21. WHILE @@FETCH_STATUS = 0
  22. BEGIN
  23.     SET @sql = 'INSERT INTO #TableSizes (table_name, row_count, reserved_size, data_size, index_size, unused_size)
  24.                 EXEC sp_spaceused ''' + @table_name + ''';';
  25.     EXEC sp_executesql @sql;
  26.     FETCH NEXT FROM table_cursor INTO @table_name;
  27. END;
  28. CLOSE table_cursor;
  29. DEALLOCATE table_cursor;
  30. -- 查询临时表,并按保留空间排序,找出占用空间最多的表,并使用中文别名
  31. SELECT
  32.     table_name AS 表名,
  33.     row_count AS 行数,
  34.     reserved_size AS 保留空间,
  35.     data_size AS 数据空间,
  36.     index_size AS 索引空间,
  37.     unused_size AS 未使用空间
  38. FROM #TableSizes
  39. ORDER BY CAST(REPLACE(reserved_size, ' KB', '') AS INT) DESC;
  40. -- 删除临时表
  41. DROP TABLE #TableSizes;
  42. GO
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表