Basic Byte Bites

SQL 행의 개수 구하기 COUNT(*) vs sys.sysindexes 본문

DataBase/MS_SQL

SQL 행의 개수 구하기 COUNT(*) vs sys.sysindexes

MKJo 2024. 7. 15. 10:56

일반적으로 행의 개수를 구할때 COUNT(*)을 사용하는 경우가 많다. 그러나 테이블을 스캔하여 ROW수를 반환하기 때문에 큰 테이블에는 시간이 오래걸린다. 하여 큰 테이블의 경우 COUNT(*)대신 sys.sysindexes뷰를 사용하여 ROWS 컬럼을 반환하는것이 좋음!

 

 

COUNT(*) 사용

 

sys.sysindexes 뷰 사용

 

 

SELECT COUNT(*) FROM 테이블명

 

위 대신 아래 쿼리를 사용한다.

SELECT rows FROM sys.sysindexes WHERE id = object_id('테이블명') and indid < 2

 

 

indid < 2 조건절을 사용하는 이유?

- INDID값이 0은 클러스터링(쉽게말해 Primary Key)이 없는 테이블일 경우, 1은 클러스터링 인덱스인 경우, 2이상은 비클러스터드 인덱스이며, 테이블의 행 수를 포함하지 않음

 

출처 https://learn.microsoft.com/ko-kr/sql/relational-databases/system-compatibility-views/sys-sysindexes-transact-sql?view=sql-server-ver16