본문 바로가기

DBMS/SQL Server (MS-SQL)

[SQL Server / MS-SQL] 테이블별 용량 및 ROW 수 조회

반응형

 

 


 

테이블별 용량 조회

SELECT C.name AS [TableName],
	   SUM(A.total_pages)*8.0/1024 AS [TotalSize(MB)]
FROM sys.allocation_units A
INNER JOIN sys.partitions B ON B.hobt_id = A.container_id
INNER JOIN sys.table C ON B.object_id = C.object_id
INNER JOIN sys.schemas D ON C.schema_id = D.schema_id
GROUP BY C.name
ORDER BY 2 DESC

 

테이블별 ROW 수 조회

SELECT B.name AS [TableName],
	   A.row_count AS [RowCount]
FROM sys.dm_db_partition_stats A
INNER JOIN sys.tables B ON A.object_id = B.object_id
WHERE A.index_id IN (0, 1) -- 힙, 클러스터드 인덱스
ORDER BY A.row_count DESC

sys.db_db_partition_stats 뷰는 시스템 뷰로, SQL Server 가 내부적으로 유지 관리하는 통계 정보를 기반으로 하여 결과를 반환한다. 테이블을 실제로 스캔하지 않기 때문에 데이터베이스에 큰 부하를 주지 않고, 신속하게 결과를 얻을 수 있다. 그러나, 이 통계는 즉각적으로 업데이트되지 않을 수 있어 매우 정확한 행 수가 필요할 때는 COUNT(*) 을 사용하는 것이 좋다. (일반적으로 이러한 오차는 매우 미미하다.)

 

 

반응형