[MSSQL] 모든 테이블 크기 정보를 한눈에 보자
exec sp_sapceused [TableName] 실행하면
해당 테이블의 테이블행수, 테이블크기, 인덱스크기등을 확인 할 수 있다.
하지만 한 개의 테이블의 정보만 확인 할 수 있다.
아래와 같이 sp_Msforeachtable 프로시져를 사용하여 해당 데이터베이스의 테이블 전체의 정보를 확인 할 수 있다.
원래 내가 하고 싶었던 것은 아래와 같이 템프성 테이블들이 10000개정도 있을때 행수가 없는 테이블들을 삭제하고 싶어서 아래 쿼리를 사용을 하였다.
<해당 데이터베이스의 모든 테이블의 행수, 크기 구하기>
CREATE TABLE #TableSize (
Name varchar(255),
[rows] int,
reserved varchar(255),
data varchar(255),
index_size varchar(255),
unused varchar(255))
CREATE TABLE #ConvertedSizes (
Name varchar(255),
[rows] int,
reservedKB int,
dataKB int,
reservedIndexSizeKB int,
reservedUnusedKB int)
EXEC sp_MSforeachtable @command1="insert into #TableSize EXEC sp_spaceused '?'";
INSERT INTO #ConvertedSizes (Name, [rows], reservedKb, dataKb, reservedIndexSizeKB, reservedUnusedKB)
SELECT name, [rows],
SUBSTRING(reserved, 0, LEN(reserved)-2),
SUBSTRING(data, 0, LEN(data)-2),
SUBSTRING(index_size, 0, LEN(index_size)-2),
SUBSTRING(unused, 0, LEN(unused)-2)
FROM #TableSize;
SELECT * FROM #ConvertedSizes
ORDER BY reservedKb desc;
GO
--DROP TABLE #TableSize
--DROP TABLE #ConvertedSizes
[참고문서]
sp_spaceused(Transact-SQL)
https://msdn.microsoft.com/ko-kr/library/ms188776.aspx