programing

테이블의 SQL 수 행

newstyles 2023. 4. 19. 22:33

테이블의 SQL 수 행

테이블에 몇 개의 행이 있는지 알려주는 SQL 쿼리를 데이터베이스로 보내야 합니다.SELECT를 사용하여 테이블의 모든 행을 가져온 다음 셀 수 있지만, 이 방법은 좋아하지 않습니다.SQL 서버에 테이블 내의 행 수를 문의할 수 있는 다른 방법이 있습니까?

네.SELECT COUNT(*) FROM TableName

select sum([rows])
from sys.partitions
where object_id=object_id('tablename')
 and index_id in (0,1)

매우 빠르지만 부정확한 경우는 거의 없습니다.

여기 쿼리가 있습니다.

select count(*) from tablename

또는

select count(rownum) from studennt

테이블을 우클릭한 후 속성 -> 스토리지 - 를 클릭하면, 「스토리지」가 표시됩니다.뷰의 행 수에 대해 아래를 사용할 수 있습니다.WHERE 절에 테이블 이름을 사용합니다.

SELECT SUM (row_count) 
FROM sys.dm_db_partition_stats 
WHERE object_id=OBJECT_ID('TableName')    
AND (index_id=0 or index_id=1)`

이 쿼리 사용:

Select
    S.name + '.' + T.name As TableName ,
    SUM( P.rows ) As RowCont 

From sys.tables As T
    Inner Join sys.partitions As P On ( P.OBJECT_ID = T.OBJECT_ID )
    Inner Join sys.schemas As S On ( T.schema_id = S.schema_id )
Where
    ( T.is_ms_shipped = 0 )
    AND 
    ( P.index_id IN (1,0) )
    And
    ( T.type = 'U' )

Group By S.name , T.name 

Order By SUM( P.rows ) Desc

인덱스 통계가 최신이어야 하지만 MS_SHIFED가 아닌 모든 테이블의 행 수가 반환됩니다.

select o.name, i.rowcnt 
from sys.objects o join sys.sysindexes i 
on o.object_id = i.id
where o.is_ms_shipped = 0
and i.rowcnt > 0
order by o.name

모든 테이블에 대해 다음 조건을 적용할 수도 있습니다.

SELECT SCHEMA_NAME([schema_id])[Schema],t.[name][ObjectName],i.[rowcnt][RowsCount] FROM sys.tables AS t
INNER JOIN sysobjects AS o ON o.[id]=t.[object_id]
INNER JOIN sysindexes AS i ON i.[id]=o.[id]
WHERE SCHEMA_NAME([schema_id])='dbo'
AND i.[indid]<2  
AND OBJECTPROPERTY(o.[id], 'IsMSShipped')=0
ORDER BY i.[rowcnt]

언급URL : https://stackoverflow.com/questions/28916917/sql-count-rows-in-a-table