使用一个T-SQL语句批量查询数据表占用空间及其行数
2012-06-26 19:43
627 查看
要找到数据库中数据表占用的空间和存在的行数。可以使用sp_spaceused搭配数据表的名称。就可以产生该表耗用的空间和现有行数。
如:
USE ADVENTUREWORKS
GO
EXEC sp_spaceused
[Sales.SalesOrderHeader]
GO
但如果数据库中包含数千的数据表,如何能利用一句SQL语句来实现?
解决方法:
一、动态SQL:
先用T-SQL动态产生表达式,然后放到一个查询中执行。如:
USE ADVENTUREWORKS
GO
SET NOCOUNT
ON
SELECT 'EXEC SP_SPACEUSED ['+S.name+'.'+T.
name +'];'
FROM sys.tables
T INNER
JOIN sys.schemas
S
ON T.SCHEMA_ID=S.SCHEMA_ID
WHERE S.NAME='HumanResources'
SET NOCOUNT
OFF
结果如下:
把结果复制到新的窗口执行即可得到结果。
但这种方法需要人手操作不适合自动化、定时化操作。
二、使用累加字符串的方式动态生成:
因为要自动化,所以会利用数据表的INSERT触发器,执行动态表达式。并且自动将输入的数据表,计算结果:
--建立表,执行insert触发器
USE AdventureWorks
GO
CREATE TABLE
myTab
(
TableName
VARCHAR(255)
)
GO
--建立触发器:
CREATE TRIGGER
tr2 ON
myTab
AFTER INSERT
AS
DECLARE
@sql VARCHAR(max)
SET
@sql=''
--使用累加字符串,产生语句
SELECT
@sql=@sql+
'EXEC sp_spaceused ['+TableName+']; '
FROMinserted
--利用EXECUTE
执行动态语句
EXEC (@sql)
--新增指定的数据表名称,会自动显示数据表的使用空间:
INSERT myTab
SELECT S.name+'.'+T.name
FROM sys.tables
T INNER
JOIN sys.schemas
S
ON T.schema_id=S.schema_id
WHERE S.name='HumanResources'
如:
USE ADVENTUREWORKS
GO
EXEC sp_spaceused
[Sales.SalesOrderHeader]
GO
但如果数据库中包含数千的数据表,如何能利用一句SQL语句来实现?
解决方法:
一、动态SQL:
先用T-SQL动态产生表达式,然后放到一个查询中执行。如:
USE ADVENTUREWORKS
GO
SET NOCOUNT
ON
SELECT 'EXEC SP_SPACEUSED ['+S.name+'.'+T.
name +'];'
FROM sys.tables
T INNER
JOIN sys.schemas
S
ON T.SCHEMA_ID=S.SCHEMA_ID
WHERE S.NAME='HumanResources'
SET NOCOUNT
OFF
结果如下:
把结果复制到新的窗口执行即可得到结果。
但这种方法需要人手操作不适合自动化、定时化操作。
二、使用累加字符串的方式动态生成:
因为要自动化,所以会利用数据表的INSERT触发器,执行动态表达式。并且自动将输入的数据表,计算结果:
--建立表,执行insert触发器
USE AdventureWorks
GO
CREATE TABLE
myTab
(
TableName
VARCHAR(255)
)
GO
--建立触发器:
CREATE TRIGGER
tr2 ON
myTab
AFTER INSERT
AS
DECLARE
@sql VARCHAR(max)
SET
@sql=''
--使用累加字符串,产生语句
SELECT
@sql=@sql+
'EXEC sp_spaceused ['+TableName+']; '
FROMinserted
--利用EXECUTE
执行动态语句
EXEC (@sql)
--新增指定的数据表名称,会自动显示数据表的使用空间:
INSERT myTab
SELECT S.name+'.'+T.name
FROM sys.tables
T INNER
JOIN sys.schemas
S
ON T.schema_id=S.schema_id
WHERE S.name='HumanResources'
相关文章推荐
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
- 使用一个T-SQL语句批量查询数据表占用空间及其行数
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- 使用SQL语句对重复记录查询、统计重复次数、删除重复数据
- 贴一个查询SQL Server数据库中所有表及其描述(Description)的SQL语句
- 在同一个sql语句中写不同条件的count数量,和查询半年的数据
- SQL语句技巧:查询存在一个表而不在另一个表中的数据记录
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 使用SQL语句从数据库一个表中随机获取数据
- T-SQL操作语句之数据查询(二):查询中使用函数
- SQL Server 查看数据表占用空间大小的SQL语句
- MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适
- 使用 SQL 语句从数据库一个表中随机获取一些数据
- excel内一键进行sql查询(使用方法 1.选择’需要进行sql查询区域 包括字段名 2 输入sql语句 3.选择输出数据的单元格)
- Excel 中使用SQL 语句查询数据(六)-----IN 语句的应用
- ASP.NET基础教程-使用CommandBuilder对象自动生成SQL语句对数据进行批量更新
- 安卓开发SQlite使用执行SQL语句一些简单的处理——2.查询数据库的数据
- SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比