0
我有一个巨大的mysql 2个表,每个表包含超过100万的数据。目前我必须将一个表中的某些列合并到另一个表中,然后有条件地更新第一个表。有条件地更新一个拥有数百万条记录的巨大表
下面是一个示例代码,向您展示我的意思
目前我使用Laravel 4.1来执行查询。并以块来更新数据。不幸的是,如果我尝试更新此方法中的超过20个条目,则服务器崩溃。
$records = Record::where('MINE_ID','!=','1')->skip($skip)->take($take)->get();
//Equivalent to "SELECT * FROM records LIMIT 20 OFFSET 20"
foreach ($records as $record) {
$id = $record->room_id;
$lat = $record->lat;
$lng = $record->lng;
$update = DB::table('accidents')
->where('room_number', $id)
->update(array(
'LATITUDE' => $lat,
'LONGITUDE' => $lng
));
}
MySQL表引擎是innoDB。有没有更快,更简单的方法来做到这一点?
任何帮助将不胜感激。
其他信息 我已将索引添加到所有表中。我听说删除索引帮助?此外,他们是BIGINT。它会影响性能吗?
处理大型数据集时,通常最好使用原始SQL查询。 – GordonM
谢谢戈登先生......我更关心这种方法。我粘贴的代码工作..但我正在寻找一个直接查询,而不需要Apache服务器或PHP。任何帮助非常感谢.. – tintinboss
没有任何信息(包括代码)是非常有用的。这是一个数据库问题,而不是php或laravel问题。从你的描述来看,你似乎可以用一两个查询来完成所有这些工作,这将会非常快速。你能否描述所涉及的表格,并确切地告诉你要用他们做什么? – Okonomiyaki3000