본문 바로가기
컴퓨터관련/MS-SQL

MS-SQL에서 테이블별 사이즈 및 건수 확인하기

by 빛과 어둠사이 2020. 4. 13.
728x90
반응형
SMALL

오늘은 SQL SERVER에서의 테이별

데이터 건수 및 크기를 확인하는 방법을

정해보도록 하겠습니다.



MS-SQL에는 기본적으로

시스템 테이블을 이용하여

확인할 수 있도록 제공하고 있습니다.


확인하는 쿼리는

다음과 같습니다.

SELECT 
	table_name = convert(varchar(30), min(o.name)) --테이블명
	,Rows = rowCnt --테이블건수
	, table_size = convert(int, ltrim(str(sum(cast(reserved as bigint)) * 8192 / 1024., 15, 0))) --테이블 사이즈
	, UNIT = 'KB' --단위
FROM sysindexes i 
	INNER JOIN sysobjects o ON (o.id = i.id) 
WHERE i.indid IN (0, 1, 255) 
	AND o.xtype = 'U'
GROUP BY i.id,rowCnt
ORDER BY table_size DESC
;


위 쿼리를 이용하여

조회를 하면 

현재 카탈로그에 있는 전체 TABLE에 대해서

row수 및 size 를 확인할 수 있습니다.


위 쿼리를 실행하면

결과는 다음과 같이 나오게 됩니다.



위처럼 나오게 됩니다.

table_name은 테이블명

rows는 데이터의 건수

table_size는 용량입니다.





위 쿼리를 이용해서

특정 하나의 테이블에 대해서만

조회를 할 수 있습니다.

하나의 테이블에 대해서만

용량을 확인하는 query는 다음과 같습니다.


SELECT 
	table_name = convert(varchar(30), min(o.name)) --테이블명
	,Rows = rowCnt --테이블건수
	, table_size = convert(int, ltrim(str(sum(cast(reserved as bigint)) * 8192 / 1024., 15, 0))) --테이블 사이즈
	, UNIT = 'KB' --단위
FROM sysindexes i 
	INNER JOIN sysobjects o ON (o.id = i.id) 
WHERE i.indid IN (0, 1, 255) 
	AND o.xtype = 'U'
	AND o.name = '테이블명' --테이블명
GROUP BY i.id,rowCnt
ORDER BY table_size DESC
;


위의 쿼리에서

테이블명 부분만 수정을 해주시면 되십니다.

저는 샘플로 하나의 테이블명을 넣고

실행을 해보았습니다.

결과는 다음과 같이 나왔습니다.



위처럼 나오게 되었습니다.






그런데 하나의 테이블에 대해서

데이터 건수를 확인할 일이 있을 경우

위처럼 할 수도 있고,

count 함수를 이용해서 할 수도 있습니다.


count함수는 건수만 필요할 경우

많이 사용하실 거라고 생각을 합니다.

하지만 이것은 저는 좋은 방법은 아니라고 생각합니다.

제 개인적인 생각이므로 틀릴 수도 있습니다.

하지만 저는 그렇게 생각합니다.

데이터의 건수가 많지 않으면

상관이 없지만

데이터의 양이 많을 때 하게 되면

SERVER에 부하가 갈 수 있습니다.


물론, 특정 조건에 맞는

데이터의 갯수를 확인할 때는

어쩔 수 없지만요.




그래서 저는 하나의 테이블에 대해서만

건수를 확인할 필요가 있을 때는

MSSQL에서 제공하는

내장프로시저를 이용하는 것을

추천합니다.


내장프로시저는 SP_SPACEUSED 입니다.

위 프로시저를 이용하면

쉬우면서도 정확한 정보를 추출할 수 있습니다.


실제 사용 쿼리를 이용해서

확인해보도록 하겠습니다.

아래처럼 QUERY를 작성해보았습니다.


SP_SPACEUSED 테이블명


그리고 실행을 하면

결과는 다음과 같습니다.



위처럼 나오게 됩니다.

맨 위의 쿼리에서 확인한 것과 같이

row수 및 size등이 나오게 됩니다.

그리고 index에 대해서도

사이즈가 나오고 합니다.


그러니 이걸 이용하는 것이 

저는 더욱 좋다고 생각합니다.


위에서 얘기한 것처럼

이것은 제 주관적인 생각임을 다시 한번

고지합니다.







이상으로 SQLSERVER에서의 

테이블별 건수 및 사이즈 확인하는

방법이였습니다~



SQL 코딩의 기술:Effective SQL, 길벗

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

728x90
반응형
LIST