繁体   English   中英

获取表行数

[英]Getting table row count

以下查询可用于查找数据库中特定表的总行数

SELECT COUNT(*) AS [TotalRowCount] FROM table_name; 

也可以使用以下脚本,通过基于表的HEAP(index_id = 0)或群集聚集索引(index_id = 1)加入表分区来获得所有表的行数:

SELECT [Tables].name AS [TableName],
SUM( [Partitions].[rows] ) AS [TotalRowCount] 
FROM sys.tables AS [Tables] 
JOIN sys.partitions AS [Partitions] 
   ON [Tables].[object_id] = [Partitions].[object_id] 
   AND [Partitions].index_id IN ( 0, 1 )
 --WHERE [Tables].name = N'table name' we uncomment for a specific table
GROUP BY [Tables].name; 

如果有人可以解释一下此代码,如果我们仅使用count()就可以得到计数,为什么还要使用第二个代码?

您可以使用第二个代码,因为可以参数化表名,因此可以同时获取多个表的计数。

在第一个代码中,您将必须使用动态SQL。

此外,第二个代码要快得多,因为它实际上并未从表中读取任何数据。 我确实认为在某些情况下由于锁定表的结果可能不完全相同。 这通常并不重要,因为它仅影响少数行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM