gpt4 book ai didi

mysql - 数据库挑战: How to Update 1 million records efficiently?

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

我正在努力更新我的庞大数据库,但由于这次大型更新/比较,我的 wamp/Heidisql 不断崩溃。

我有两个数据库表:主表“member_all”(包含 300 万条记录)和子表:“mobile_results”(包含 9,000 条记录)。表的数据库结构如下所示:

主表(“member_all”)

id int(11),
name varchar(255),
phoneWork varchar(255),
phoneMobile varchar(255),
phoneMobileNetwork varchar(255)

表中的数据如下所示:

id name      phoneWork      phoneMobile   phoneMobileNetwork 
1 bill 061090999990 0789867676 Null
3 billsaasa 06109094399990 076689867676 Null

子表:(“mobile_results”)

id int(11) autoincrement,
phoneMobile varchar(255),
phoneMobileNetwork varchar(255)

mobile_results 中的数据如下所示:

id     phoneMobile  phoneMobileNetwork
8789 0789867676 Orange
238789 076689867676 O2

我的 9,000 个手机号码的所有移动网络数据都存储在“mobile_results”中,但是当我尝试比较这两个表时,我陷入困境并且我的 wamp/Heidi sql 崩溃了?

我的问题是:

如何有效地使用“mobile_results”中的“phoneMobileNetwork”值填充“member_all”?

以下是我尝试过的查询:

查询 1

我使用 limit 划分查询。这很慢,而且还需要 1 周的时间来比较 mobile_results 中的 9,000 条记录。

update  member_all,mobile_results 
set member_all.phoneMobileNetwork=mobile_results.phoneMobileNetwork
where member_all.phoneMobile in
(SELECT phoneMobile FROM mobile_results limit 1,10);

查询 2

update  member_all,mobile_results 
set member_all.phoneMobileNetwork=mobile_results.phoneMobileNetwork
where member_all.phoneMobile in
(SELECT phoneMobile FROM mobile_results where id <10);

同样不适用于大量记录。

请帮助我如何一次性有效地更新我的“member_all”表的记录。

非常感谢您在这方面的帮助。

最佳答案

你可以试试这个吗。我认为使用 Exist 会更快

update  member_all
set phoneMobileNetwork=
(select phoneMobileNetwork from mobile_results where
member_all.phoneMobile=mobile_results.phoneMobile)
WHERE EXISTS
(
select 1 from mobile_results where
member_all.phoneMobile=mobile_results.phoneMobile);

关于mysql - 数据库挑战: How to Update 1 million records efficiently?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24064582/

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