본문 바로가기

SQL/도움말 팁들!

테이블 row count 빠르게 계산하는 방법

흔히 테이블 레코드수를 계산하기 위하여


SELECT
COUNT(*)

FROM TABLE_NAME

이런 쿼리를 사용한다.

이 쿼리는 레코드 개수가 얼마 안 될 경우에는 문제가 없으나,레코드 수가 많을 경우에는 상당히 부담이 가는 쿼리이다.
만일, 테이블의 PK에 인덱스가 있다면 아래의 시스템 테이블을 이용한 쿼리를 사용하는 것도 좋을 성 싶다.
table_name에 실제 테이블명을 적어 주면 된다.


SELECT
si.rows

FROM INFORMATION_SCHEMA.TABLES t

INNER JOIN sysindexes si on (OBJECT_ID('table_name') =

si.id and si.indid < 2)

WHERE t.table_name = 'table_name'


스키마 내의 모든 테이블의 레코드 개수를 알고 싶다면


SELECT
si.rows, t.table_name

FROM INFORMATION_SCHEMA.TABLES t

INNER JOIN sysindexes si on (OBJECT_ID(t.table_name) =

si.id and si.indid < 2)


유의할 점은 PK에 인덱스가 있어야 한다. 없다면 count(*) 와 결과값이 틀릴 수 있다.