如何在不扫描所有表的情况下计算或知道表的行数,可能使用ROW_NUMBER?
解决方法
如果您需要精确计数,则需要执行COUNT(*)来扫描聚簇索引.
您可以使用sys.partitions模式进行粗略计数,如此处所示http://www.kodyaz.com/articles/sql-rowcount-using-sql-server-system-view-sys-partitions.aspx
更新:将计数变为变量:
DECLARE @cnt INT; SELECT @cnt = SUM(rows) FROM sys.partitions WHERE index_id IN (0,1) AND object_id = OBJECT_ID('MyDB.dbo.MyTable'); SELECT @cnt;