试图在mysql中更新/插入20k记录但是它的工作速度很慢吗?

时间:2014-11-16 18:08:45

标签: php mysql amazon-ec2 innodb

试图在mysql中更新/插入20k记录但是它的工作速度很慢吗? 我的服务器配置是 数据库引擎:innodb。 服务器:Amazon Ec2 拉姆:7GB

我已经在20k记录上使用了循环,并根据我的条件插入和更新记录。 插入/更新记录大约需要45到60分钟。

2 个答案:

答案 0 :(得分:0)

您必须使用批量插入

  INSERT INTO table_name ( field1, field2,...fieldN )
                   VALUES
                   ( a1, a2,...aN ),( b1, b2,...bN ),..;

连接行值并将其称为单个查询

答案 1 :(得分:0)

如果您分别迭代并更新正常的每条记录。

有一种更快的方式:

使用一个sql语句迭代数据以插入和设置要更新的最大包(1k):

INSERT INTO table (field,...) VALUES (va1,...), (vb1,...) ON DUPLICATE KEY UPDATE field=VALUE(field),ID=LAST_INSERT_ID(ID);其中ID is your primary key;

这种方式只需很少的插入,您就可以更新或创建新行并保持主要索引的检查(不会因每个重复插入而膨胀)。

这应该可以将事情加速到不到一分钟。