检查大表行号的错误

时间:2014-08-05 17:53:40

标签: sql sql-server windows-7 sql-server-2008-r2

我在win7上有一个关于SQL Server 2008 R2的表。

它是130 GB。

它有45亿行,通过检查表属性得到。

但是,如果我使用COUNT(*)获取行号,我会收到错误:

  

将表达式转换为数据类型int的算术溢出错误。

我的SQL查询:

SELECT CAST(COUNT(*) AS BIGINT) AS total_row_num
FROM [my_db].[dbo].[my_table]

解决方案 number of rows in big table 不适合我。我需要获得确切的行数。

此外,COUNT(*)对于大桌来说运行速度非常慢,有更快的方法吗?

由于

2 个答案:

答案 0 :(得分:1)

您需要使用COUNT的BIGINT版本:

SELECT COUNT_BIG(1) FROM [my_db].[dbo].[my_table];

我只是在一个有一亿行的桌子上使用它,它几乎立即返回。我没有一个超过40亿行的便携式表来测试,但只要你的表使用聚簇主键正确索引,它就应该非常快。

答案 1 :(得分:0)

更快捷的方式是致电sp_spaceused

EXEC sp_spaceused 'my_table'

有关存储过程的文档:Microsoft Developer Network