[MSSQL] 특정 테이블의 전체 행수 가져오기(Row count)
1
2
3
4
|
select si.id, si.rows, si.*
from sysindexes si
where and si.indid < 2 -- indexid = 0 : 힙, indexid = 1 : 클러스터
and si.id = OBJECT_ID('dbo.tbl_sample');
|
cs |
개발 중 내가 모르는 테이블의 데이터를 파악해야 할 때가 있다.
데이터 파악을 위해 조회를 해야 하는데, 전체 레코드 수가 억 단위로 넘어가는 테이블이라면
대충날린 내 쿼리 하나에 서버 부하가 일어날 수도 있는 법이다.
... 애초에 이정도 규모라면 모니터링 되고 있겠지만
아무튼 나는 처음 보는 테이블이 있다면 항상 테이블의 행수(Row)부터 확인한다.
sysindexes에 대해 정확하게 아는 게 아니라는 점이 가장 큰 맹점인데...
sysindexes는 DB 데이터 변화에 따라 시스템에서 실시간 업데이트 하는 Index일 것이며,
sysindexes 관련 데이터가 변경되는 과정에서 위 쿼리를 실행했을 때는
정확한 행의 수를 못받을 수도 있을 것 같다는 예상을 조심스럽게 해본다.
어차피 정확한 건수가 필요한 게 아니라, 테이블의 데이터가 많냐 적냐를 확인하기 위한 쿼리기 때문에
원래 목적에는 부합하는 쿼리이다.
sys.debug (Transact-sql) - SQL Server
sys.sysindexes(Transact-SQL)sys.sysindexes (Transact-SQL) 이 문서의 내용 --> 적용 대상: SQL Server Azure SQL Database Azure Synapse Analytics(SQL DW) 병렬 데이터 웨어하우스 APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse 현재 데
docs.microsoft.com
sysindexes에 대한 MS 공식 레퍼런스 문서