查询数据库中每张表的数据以及索引占用空间
2022/8/17 2:54:39
本文主要是介绍查询数据库中每张表的数据以及索引占用空间,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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这篇关于查询数据库中每张表的数据以及索引占用空间的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!