使用一个T-SQL语句批量查询数据表占用空间及其行数
要找到数据库中数据表占用的空间和存在的行数。可以使用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'
使用一个T-SQL语句批量查询数据表占用空间及其行数的更多相关文章
- 使用Sql语句快速将数据表转换成实体类
开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...
- sqlserver 查询所有表及记录行数
--查询所有表名 select name from sysobjects where xtype='u' select * from sys.tables --查询所有表名及对应架构 select t ...
- Java使用JDBC连接数据库逐条插入数据、批量插入数据、以及通过SQL语句批量导入数据的效率对比
测试用的示例java代码: package com.zifeiy.test.normal; import java.io.File; import java.io.FileOutputStream; ...
- Sql语句批量更新数据(多表关联)
最近在项目中遇到一个问题,原来设计的功能是不需要一个特定的字段值depid的,但是新的功能需要根据depid来展现,于是出现了这样一个问题,新增加的数据都有正确的depid,而原来的大量的数据就没有d ...
- EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值
一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为 -1 ,sqlserver 里面 还没有测试过 using (var ctx = new MyDbConte ...
- OLEDB不使用SQL语句直接打开数据表
一般来说获取数据库表的方法是采用类似 select * from table_name 这样的sql语句.SQL语句必然伴随着数据库的解释执行,一般来说效率比较低下,而且使用SQL语句时需要数据库支持 ...
- Entity Framework 使用sql语句分页(查询单表)
1.查询单表 var pageSize = 2;//条数 var pageIndex = 2;//索引 var sql = @" SELECT D.* FROM ( SELECT ROW_N ...
- Sql语句优化-查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join
在实际开发中,我们往往需要比较两个或多个表数据的差别,比较那些数据相同那些数据不相同,这时我们有一下三种方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,3.使用连接查询(i ...
- sql server 批量删除数据表
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Auth ...
随机推荐
- linux网络编程学习笔记之三 -----多进程并发服务端
首先是fork()函数.移步APUE 8.3. 比較清晰的解释能够參考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://w ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式公布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...
- hbase列表排序
hbase都是依照字典序进行排序的,也就是降序,在页面的表现就是最早的数据(rowkey最小的)排在前面. 眼下的解决方式是:给主键添加一个外键关联表.外键的生成规则是 400000000000-主键 ...
- 解决vmware卡的要死
如题: 一般而言虚拟机不会卡的.CPU跟随你的操作而增减,内存设置vmware的推荐值就好.遇到卡的情况,检查一下如下情况. 两个方法: 1>内存分配最好是1G,512少了点 2>虚拟机的 ...
- InnoDB行格式(compact,redundant)对照
InnoDB行格式分两种格式(COMPACT,redundant)默觉得COMPACT compact的存储格式为 首部为一个非NULL的变长字段长度列表,并且是依照列的顺序逆序放置的,当列的长度小于 ...
- eclipse luna 无法安装veloeclipse问题
问题: 在eclipse 4.4(luna)版本号.安装veloeclipse 2.0.8时,在即将完毕的时候出现下面错误提示: An error occurred while installing ...
- ibatis实战之OR映射
相对Hibernate等ORM实现而言,ibatis的映射配置更为简洁直接,以下是一个典型的配置文件. <?xml version="1.0" encoding=" ...
- POJ 3684 Priest John's Busiest Day 2-SAT+输出路径
强连通算法推断是否满足2-sat,然后反向建图,拓扑排序+染色. 一种选择是从 起点開始,还有一种是终点-持续时间那个点 開始. 若2个婚礼的某2种时间线段相交,则有矛盾,建边. easy出错的地方就 ...
- iOS 8 新特性
这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...
- android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?
今天遇到了这个问题,分享一下解决方式. android没有main 函数,自然也就不存在main里面加入异常处理来实现全局异常捕获的方案.那android程序有全局异常补货的解决方式吗? 答案是有的: ...