试图在mysql中更新/插入20k记录但是它的工作速度很慢吗? 我的服务器配置是 数据库引擎:innodb。 服务器:Amazon Ec2 拉姆:7GB
我已经在20k记录上使用了循环,并根据我的条件插入和更新记录。 插入/更新记录大约需要45到60分钟。
答案 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
;
这种方式只需很少的插入,您就可以更新或创建新行并保持主要索引的检查(不会因每个重复插入而膨胀)。
这应该可以将事情加速到不到一分钟。