简单答案:
数据库供应商独立解决方案=使用标准= COUNT(*)
有近似的 SQL Server解决方案,但不使用COUNT(*)=超出范围
笔记:
COUNT(1)= COUNT(*)= COUNT(PrimaryKey)以防万一
编辑:
SQL Server示例(14亿行,12列)
SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)
-- NOLOCK here is for me only to let me test for this answer: no more, no less
1次运行5:46分钟,计数= 1,401,659,700
--Note, sp_spaceused uses this DMV
SELECT
Total_Rows= SUM(st.row_count)
FROM
sys.dm_db_partition_stats st
WHERE
object_name(object_id) = 'MyBigtable' AND (index_id < 2)
2次运行,均在1秒以下,计数= 1,401,659,670
第二个具有较少的行=错误。取决于写入的内容相同或更多(删除操作在此处工作时间不多)