使用一個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'
相關文章
- HANA資料庫查詢大表佔用記憶體空間 for hana 2.0資料庫記憶體
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- 查詢資料庫每個表佔用的大小資料庫
- 查詢表空間使用情況
- 表空間使用量查詢
- 資料庫查詢語句資料庫
- 記一個實用的sql查詢語句SQL
- oracle表空間使用率查詢Oracle
- 臨時表空間被佔滿的原因查詢
- MYSQL造資料佔用臨時表空間MySql
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 臨時表空間和回滾表空間使用率查詢
- 達夢資料庫表空間等空間大小查詢方法總結資料庫
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- 使用查詢語句導致 RDS 伺服器報硬碟磁碟空間不足伺服器硬碟
- 多表查詢建表語句
- 分享一個查詢某個使用者過去一段時間內執行的SQL語句。SQL
- 請教一個mysql查詢語句!!MySql
- 【UNDO】Oracle undo表空間使用率過高,因為一個查詢Oracle
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- 檢視 Laravel 查詢資料語句Laravel
- 查詢表空間使用情況的指令碼指令碼
- Oracle 查詢佔用臨時表空間大的歷史會話和SQLOracle會話SQL
- 一條查詢語句的執行流程
- sybase iq表空間管理常用語句
- JAVA 中使用 SQL 語句查詢 EXCEL 檔案資料JavaSQLExcel
- 根據查詢條件批量修改表資料
- 資料查詢語句:DQL(Data Query Language)
- MySQL資料庫詳解(一)SQL查詢語句是如何執行的?MySql資料庫
- AWR佔用sysaux表空間太大UX
- Oracle 批量建表空間Oracle
- SQL單表查詢語句總結SQL
- 檢視ELF中資料段哪些變數佔用空間變數
- 記一次Linux伺服器磁碟空間佔用,大檔案查詢Linux伺服器
- create table 使用select查詢語句建立表的方法分享
- hisql ORM 查詢語句使用教程SQLORM
- DQL(Date Query Language)資料庫查詢語句資料庫
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL