gpt4 book ai didi

mysql - 优化超过百万条记录的表的mysql更新

转载 作者:行者123 更新时间:2023-11-29 00:12:01 26 4
gpt4 key购买 nike

我有一个包含大约 170 万条记录的 mysql 表。目标是填充表中缺失的信息。以下是我正在尝试做的伪代码:

SELECT DISTINCT A,B FROM table1

对于上述查询中的每个值 A1,B1

SELECT C FROM table2 WHERE A LIKE '%A1' AND B LIKE '%B1'
UPDATE table1 SET C=C WHERE A=A1 AND B=B1

不幸的是,问题的本质是部分值 A1 和 B1 在 table2 列中,所以我不能使用 JOIN 语句。

大约有 15 万条唯一更新需要进行,这将影响 170 万条记录。

我分别在表1和表2的A1、B1列建立了索引。

我写了一个简单的 python 脚本来执行上述操作,但运行该脚本的速度太慢了 - 它现在已经运行了大约 15 个小时,但只完成了 1/4 的工作。

如何优化 mysql 中的查询。这些表使用 InnoDB。

最佳答案

经过一些研究和实验,我发现索引不会用于前导通配符查询(%value 类型的查询),因此任何通过改进查询来优化的努力都是徒劳的。

对我来说幸运的是,我知道最重要的变体会属于前导通配符查询(涵盖最多记录的变体),并且我通过避免使用 LIKE 子句直接搜索它们。在覆盖了大部分记录后,我将剩余的记录复制到另一个表中,并使用 LIKE 子句来实现我的目标。

感谢所有提供帮助的人。

关于mysql - 优化超过百万条记录的表的mysql更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624290/

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