提问人: 提问时间:10/26/2015 更新时间:10/26/2015 访问量:181
MySqli 插入海量数据
MySqli Inserting mass data
问:
我正在开发一个PHP脚本,该脚本将大量将数据插入到表中。
我正在使用这样的准备好的语句:
$sql = "INSERT INTO clans(id, clanid, name, badge, status, playercount, score, requiredtrophies, warswon, warslost, warstied, location,warfrequency, exp, level, description, playerjson, lastupdate)
VALUES ('', ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, now())";
$stmt = $con->prepare($sql); //prepare update statement
$stmt->bind_param('ssisiiiiiissiiss',$clanid,$name,$badge,$status,$playercount,$score,$requiredtrophies,$warswon,$warslost,$warstied,$location,$warfrequency,$exp,$level,$description,$playerarray);
在那之后,我有一个while循环,它将执行很多查询(数十万甚至几百万!),其中的数据非常大!playerjson 是一个巨大的 json 数组。
数据将从网站 API 的 JSON 响应接收。
我查看了交易,但它们最终得到了一个 502 Bad Gateway,我认为这是因为内存中的数据太多。这不是超时问题,因为我在 nginx 和ini_set
那么,批量插入大量数据的最快方法是什么?
答:
0赞
snitch182
10/26/2015
#1
最快的方法是 LOAD DATA INFILE。考虑创建一个文件!
但在您的例子中,创建一个临时表
create table clans_temp like clans;
并插入其中。然后,在一个查询中更新原始表并删除临时表。
据我所知,鉴于问题的限制,这是最快的方法。
评论
0赞
10/26/2015
这有什么意义呢?为什么不直接插入主的??
0赞
snitch182
10/27/2015
因为插入到空表中速度更快。然后,您可以一次添加所有记录,这也更快。当您谈论数千个插入时,这是有道理的。
0赞
snitch182
10/27/2015
哎 呦。。我假设您正在使用一个正在使用的表。
评论
LOAD DATA INFILE
LOAD DATA INFILE