首页 文章

检查大表行号的错误

提问于
浏览
1

我在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

    您需要使用COUNT的BIGINT版本:

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

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

  • 1

    更快的方法是调用 sp_spaceused

    EXEC sp_spaceused 'my_table'
    

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

相关问题