gpt4 book ai didi

mysql - 在 MySQL 中处理大量数据 - 一次选择多少行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:23:22 26 4
gpt4 key购买 nike

我有一个 MySQL 表,其中可能包含符合我要评估的标准的 800,000 行。我想处理每一行这样的数据。

我有这样的算法:

offset = 0 
while offset < 800000
rows = tbl.query("SELECT * FROM TABLE WHERE COND1 AND COND2 LIMIT#{offset},10")
process_rows(rows)
offset = offset + 10
end

然后我改成这样,跑的快多了:

offset = 0 
while offset < 800000
rows = tbl.query("SELECT * FROM TABLE WHERE COND1 AND COND2 LIMIT#{offset},100")
process_rows(rows)
offset = offset + 100
end

您会在这里注意到,我一次抓取 100 行。

当我说第二个示例运行得更快时,我最终要衡量的是每秒处理的行数。

如何使用理论和实践方法优化每秒处理的行数,即数据处理速度?我也愿意使用并行编程方法(多个实例或线程)。

最佳答案

不!如果您有 800,000 行,并且执行 $offs, 100,您将最终扫描大约 6,400,000,000 行!让我解释一下...

第一次:LIMIT 0, 100 -- 需要 100 行第二次:LIMIT 100, 100 -- 需要 200 行(跳过 100 行,使用 100 行)第三次:LIMIT 200, 100 -- 300 行...上次:LIMIT 799900, 100 -- 所有 800000 行都被触及。

加起来超过 60 亿。复杂度称为 O(N*N)。

相反...

使用 PRIMARY KEY 并记住您离开的地方。在我的博客中,我详细介绍了如何处理 PRIMARY KEY 不是数字或数字中有漏洞的情况。底线:只接触了 800,000 行。这称为 O(N)。

我的博客旨在删除大量行;您需要谈论“分块”的部分。

关于mysql - 在 MySQL 中处理大量数据 - 一次选择多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29662044/

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