SQL-telrijen in een tabel

Ik moet een SQL-query naar een database sturen die me vertelt hoeveel rijen er in een tabel zijn. Ik zou alle rijen in de tabel kunnen krijgen met een SELECT en ze dan tellen, maar ik hou er niet van om het op deze manier te doen. Is er een andere manier om het aantal rijen in een tabel aan de SQL-server te vragen?


Antwoord 1, autoriteit 100%

Ja, SELECT COUNT(*) FROM TableName


Antwoord 2, autoriteit 30%

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

is erg snel, maar is zelden onnauwkeurig.


Antwoord 3, autoriteit 5%

Gebruik deze zoekopdracht:

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

Antwoord 4, autoriteit 4%

Waarom klikt u niet gewoon met de rechtermuisknop op de tabel en vervolgens op eigenschappen -> Opslag en het zou u het aantal rijen vertellen.
U kunt het onderstaande gebruiken voor het aantal rijen in een weergave

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

Antwoord 5, autoriteit 2%

Hier is de zoekopdracht

select count(*) from tablename

of

select count(rownum) from studennt

Antwoord 6

De indexstatistieken moeten waarschijnlijk actueel zijn, maar dit geeft het aantal rijen terug voor alle tabellen die niet MS_SHIPPED zijn.

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

Other episodes