SQL 计算表中的行数

问题描述 投票:0回答:7

我需要向数据库发送一个 SQL 查询,告诉我表中有多少行。我可以使用 SELECT 获取表中的所有行,然后对它们进行计数,但我不喜欢这样做。还有其他方法可以向 SQL Server 询问表中的行数吗?

sql-server count rows database-table
7个回答
190
投票

是的,

SELECT COUNT(*) FROM TableName


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

速度非常快,但很少不准确。


10
投票

这是查询

select count(*) from tablename

select count(rownum) from student

7
投票

为什么不直接右键单击表,然后单击“属性”->“存储”,它会告诉您行数。 您可以使用以下内容来计算视图中的行数。在 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)`

6
投票

使用此查询:

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

0
投票

索引统计信息可能需要是最新的,但这将返回所有非 MS_SHIPPED 表的行数。

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

0
投票

对所有表尝试此操作也可以应用条件:

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]
© www.soinside.com 2019 - 2024. All rights reserved.