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

一條指令掌握全庫表資訊:sp_MSForEachTable 統計記錄數、空間、欄位數

     編輯:PHP 相關知識

腳本功能

一次性輸出所有用戶表的:表名、欄位數、記錄數、保留/使用/索引/未用空間。

完整執行碼

EXEC sp_MSForEachTable
@precommand = N'
CREATE TABLE ##t (
    id INT IDENTITY,
    表名 SYSNAME,
    字段数 INT,
    记录数 INT,
    保留空间 NVARCHAR(10),
    使用空间 VARCHAR(10),
    索引使用空间 VARCHAR(10),
    未用空间 VARCHAR(10)
)',
@command1 = N'
INSERT ##t (表名, 记录数, 保留空间, 使用空间, 索引使用空间, 未用空间)
EXEC sp_spaceused ''?'';
UPDATE ##t SET 字段数 = (SELECT COUNT(*) FROM syscolumns WHERE id = OBJECT_ID(''?''))
WHERE id = SCOPE_IDENTITY()',
@postcommand = N'SELECT * FROM ##t ORDER BY id; DROP TABLE ##t';

原理解析

  • sp_MSForEachTable 遍歷所有用戶表,? 代表當前表名
  • sp_spaceused 回傳空間統計
  • syscolumns 統計欄位數
  • 暫存表 ##t 彙總輸出,最後自動清理

輸出範例

id  表名          字段数  记录数  保留空间  使用空间  索引使用空间  未用空间
1   Orders        12      15000   12 MB     10 MB     1 MB           1 MB
2   Customers     8       5000    5 MB      4 MB      500 KB         500 KB
...

應用場景

  • 容量規劃與空間審計
  • 尋找大表/未用索引優化目標
  • 遷移前資產盤點
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved