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

SQL Server 快速統計資料表筆數與空間佔用

     編輯:關於SqlServer

一條查詢搞定所有使用者表的筆數與大小

在 AdventureWorks 範例資料庫中執行以下查詢,即可列出每張表的資料列數與空間佔用(KB):

USE ADVENTUREWORKS; GO

SELECT
    TableName = obj.name,
    TotalRows = prt.rows,
    [SpaceUsed(KB)] = SUM(alloc.used_pages) * 8
FROM sys.objects obj
JOIN sys.indexes idx ON obj.object_id = idx.object_id
JOIN sys.partitions prt ON obj.object_id = prt.object_id
JOIN sys.allocation_units alloc ON alloc.container_id = prt.partition_id
WHERE obj.type = 'U'               -- 僅使用者表
  AND idx.index_id IN (0, 1)       -- 堆或叢集索引
GROUP BY obj.name, prt.rows
ORDER BY TableName;

查詢結果示例

查詢結果截圖

關鍵點解析

  • sys.partitions.rows 記錄的是資料列層級的筆數(堆或叢集索引各一列),故以 idx.index_id IN (0,1) 過濾避免重複計算。
  • sys.allocation_units.used_pages 為已使用頁數,每頁 8 KB,乘 8 即得 KB 數。
  • 適用於 SQL Server 2005 及以上版本。

進階提示

若需包含索引大小,可移除 idx.index_id IN (0,1) 條件並調整分組鍵;若只想看前 N 大表,加上 ORDER BY [SpaceUsed(KB)] DESC 配合 TOP 即可。

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