Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库挑战:如何高效地更新100万条记录?_Mysql_Sql_Database_Sql Update - Fatal编程技术网

Mysql 数据库挑战:如何高效地更新100万条记录?

Mysql 数据库挑战:如何高效地更新100万条记录?,mysql,sql,database,sql-update,Mysql,Sql,Database,Sql Update,我正在努力更新我庞大的数据库,但由于这个大型更新/比较,我的wamp/Heidisql不断崩溃 我有两个数据库表:主表member\u all包含300万条记录,子表mobile\u results包含9000条记录。表的数据库结构如下所示: id name phoneWork phoneMobile phoneMobileNetwork 1 bill 061090999990 0789867676 Null 3 billsaasa 061090

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

我有两个数据库表:主表member\u all包含300万条记录,子表mobile\u results包含9000条记录。表的数据库结构如下所示:

id name      phoneWork      phoneMobile   phoneMobileNetwork 
1  bill      061090999990   0789867676    Null
3  billsaasa 06109094399990 076689867676  Null
id     phoneMobile  phoneMobileNetwork
8789   0789867676   Orange     
238789 076689867676 O2
主表成员所有

表中的数据如下所示:

id name      phoneWork      phoneMobile   phoneMobileNetwork 
1  bill      061090999990   0789867676    Null
3  billsaasa 06109094399990 076689867676  Null
id     phoneMobile  phoneMobileNetwork
8789   0789867676   Orange     
238789 076689867676 O2
子表:移动搜索结果

mobile_结果中的数据如下所示:

id name      phoneWork      phoneMobile   phoneMobileNetwork 
1  bill      061090999990   0789867676    Null
3  billsaasa 06109094399990 076689867676  Null
id     phoneMobile  phoneMobileNetwork
8789   0789867676   Orange     
238789 076689867676 O2
9000手机号码的所有移动网络数据都存储在mobile_结果中,但当我尝试比较这两个表时,我被卡住了,我的wamp/Heidi sql崩溃了

我的问题是:

如何有效地使用来自移动搜索结果的phoneMobileNetwork值填充成员搜索结果

以下是我尝试过的查询:

问题1

我用limit划分了我的查询。这很慢,而且需要一周的时间来比较来自mobile_结果的9000条记录

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

对于大量的记录,同样的情况也不好

请帮助我如何一次有效地更新我的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);

您可以尝试在更新时联接表。不存在,不存在。像这样:

update member_all AS ma
  JOIN mobile_results ms on ma.phoneMobile=ms.phoneMobile
  SET member_all.phoneMobileNetwork=mobile_results.phoneMobileNetwork
参考:


哇,空间利用率低。我会缩小你的varchar的大小…但与你的问题无关,抱歉。我被卡住和我的wamp/Heidi sql崩溃到底意味着什么?您收到了什么错误?@MartinK.my HeidiSQL/phpmyadmin停止响应。@user3489398:供进一步参考。请确保设置问题的格式,以便帮助您的人了解您在问什么您在寻找特定于MySQL或Oracle的答案吗?您似乎指的是MySQL,但您有一个“Oracle”标签。答案可能会大不相同。