gpt4 book ai didi

sql - 在非常大的表中计算确切行数的最快方法?

转载 作者:太空狗 更新时间:2023-10-30 01:36:46 25 4
gpt4 key购买 nike

我看到一些文章指出,当表有很多行和很多列时,SELECT COUNT(*) FROM TABLE_NAME 会很慢。

我有一个可能包含数十亿行的表 [它大约有 15 列]。有没有更好的方法来获取表格行数的EXACT计数?

请在回答之前考虑以下事项:

  • 我正在寻找数据库供应商独立的解决方案。如果可以涵盖 MySQLOracleMS SQL Server。但是如果真的没有数据库供应商独立解决方案然后我将接受不同的解决方案针对不同的数据库供应商。

  • 我无法使用任何其他外部工具去做这个。我主要是想找一个基于 SQL 的解决方案。

  • 我无法规范我的数据库设计任何进一步。它已经在 3NF 中,而且是很多代码已经写好了围绕着它。

最佳答案

简单的回答:

  • 数据库供应商独立解决方案 = 使用标准 = 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

第二个行数较少 = 错误。将相同或更多取决于写入(删除是在非工作时间完成的)

关于sql - 在非常大的表中计算确切行数的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com