首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 游標實戰:查詢單一資料庫所有表大小與空間使用情況

     編輯:關於SqlServer

需求

效能調優前快速掌握資料庫各表筆數、資料大小、索引大小、未使用空間,定位大表壓力來源。

游標實作腳本

DECLARE @tablespaceinfo TABLE (
    name SYSNAME,
    rows BIGINT,
    reserved VARCHAR(100),
    data VARCHAR(100),
    index_size VARCHAR(100),
    unused VARCHAR(100)
);

DECLARE @tablename VARCHAR(255);
DECLARE info_cursor CURSOR FOR
    SELECT QUOTENAME(name) FROM sys.tables WHERE type = 'U';

OPEN info_cursor;
FETCH NEXT FROM info_cursor INTO @tablename;

WHILE @@FETCH_STATUS = 0 BEGIN
    INSERT INTO @tablespaceinfo EXEC sp_spaceused @tablename;
    FETCH NEXT FROM info_cursor INTO @tablename;
END

CLOSE info_cursor;
DEALLOCATE info_cursor;

SELECT * FROM @tablespaceinfo
ORDER BY CAST(REPLACE(reserved, 'KB', '') AS INT) DESC;

輸出欄位說明

  • reserved:表保留總空間 (資料+索引+未用)。
  • data:資料頁面空間。
  • index_size:索引頁面空間。
  • unused:已配置未使用空間。

擴展:全執行個體所有資料庫所有表

參考後續文章「SQL Server 如何查看所有資料庫所有表大小資訊」,使用 sp_MSforeachdb + sp_MSforeachtable 或雙層游標實現。

單一資料庫所有表空間資訊

全執行個體所有表空間資訊

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved