首页 > 数据库 >查询数据库中每张表的数据以及索引占用空间

查询数据库中每张表的数据以及索引占用空间

时间:2022-08-15 23:00:12浏览次数:57  
标签:INT tableName 50 每张 索引 查询数据库 data NVARCHAR indexSize

BEGIN

  --查询目前数据库中的用户表

  DECLARE @currentTable TABLE (tableName NVARCHAR(50));

  INSERT INTO @currentTable (tableName)

  SELECT name

  FROM sys.objects

  WHERE type = 'U';

  --缓存系统存储过程的表变量

  DECLARE @temp TABLE(tableName NVARCHAR(50), rows NVARCHAR(50), reserved NVARCHAR(50),

                      data NVARCHAR(50), indexSize NVARCHAR(50), unused NVARCHAR(50));

 

  DECLARE i_cursor CURSOR FOR SELECT tableName FROM @currentTable;

  OPEN i_cursor;

  DECLARE @tableName NVARCHAR(50);

  FETCH NEXT FROM i_cursor INTO @tableName;

  WHILE @@FETCH_STATUS = 0

  BEGIN

    INSERT INTO @temp

    --调用系统存储过程,查询表的资源占用情况

    EXEC sp_spaceused @tableName;

    FETCH NEXT FROM i_cursor INTO @tableName;

  END

  CLOSE i_cursor;

  DEALLOCATE i_cursor;

 

  DECLARE @temp1 TABLE(tableName NVARCHAR(50), rows INT, reserved INT, data INT, indexSize INT, unused INT);

  INSERT INTO @temp1

  SELECT tableName

  ,      rows

  ,      convert(INT, substring(reserved, 1, len(reserved) - 3))

  ,      convert(INT, substring(data, 1, len(data) - 3))

  ,      convert(INT, substring(indexSize, 1, len(indexSize) - 3))

  ,      convert(INT, substring(unused, 1, len(unused) - 3))

  FROM @temp;

 

  --统计比例

  DECLARE @dataSum INT, @indexSum INT;

  SELECT @dataSum = sum(data), @indexSum = sum(indexSize) FROM @temp1;

  DECLARE @result TABLE(tableName NVARCHAR(50), rows INT, data DECIMAL(10,2), dataRate DECIMAL(10,2),

                        indexSize DECIMAL(10,2), indexRate DECIMAL(10,2))

  INSERT INTO @result

  SELECT tableName

  ,      rows

  ,      data * 1.0 / 1024 --KB转为MB

  ,      data * 1.0 / @dataSum

  ,      indexSize * 1.0 / 1024  --KB转为MB

  ,      indexSize * 1.0 / @indexSum

  FROM @temp1

 

  SELECT * FROM @result ORDER BY rows DESC;

END

标签:INT,tableName,50,每张,索引,查询数据库,data,NVARCHAR,indexSize
From: https://www.cnblogs.com/wangyulovecode/p/16589993.html

相关文章

  • mongodb4.4索引
    1.索引简介数据库索引类似于图书索引。有了索引便不需要浏览整本书,而是可以采取一种快捷方式,只查看一个有内容引用的有序列表。这使得MongoDB的查找速度提高了好几个数......
  • 搞定面试官 - 你可以介绍一下在 MySQL 中,哪些情况下 索引会失效嘛?
    大家好,我是程序员啊粥,前边给大家分享了*MySQLInnoDB索引模型在MySQLInnoDB中,为什么delete删除数据之后表数据文件大小没有变如何计算一个索引的长度如何查看......
  • SQL索引
    语法:UNIQUE(DISTINCT):惟一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。CLUSTERED/NONCLUSTERED:聚集和非聚集索......
  • Six---pytorch学习---索引与切片
    pytorch学习(3)索引与切片普通索引冒号索引(切片)index_select选择特定索引masked_select选择符合条件的索引take索引普通索引index(有负索引)importtorcha......