我在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(*)
对于大桌来说运行速度非常慢,有更快的方法吗?
由于
答案 0 :(得分:1)
您需要使用COUNT的BIGINT版本:
SELECT COUNT_BIG(1) FROM [my_db].[dbo].[my_table];
我只是在一个有一亿行的桌子上使用它,它几乎立即返回。我没有一个超过40亿行的便携式表来测试,但只要你的表使用聚簇主键正确索引,它就应该非常快。
答案 1 :(得分:0)