【发布时间】:2015-06-23 14:06:02
【问题描述】:
我是 node-mysql 的新手,但我遇到了一个令人担忧的速度问题,因为它非常简单。 我正在处理相当合理的数据量(2000 个 mysql 条目),当我使用多个查询时,通过 connection.query() 输入它变得非常慢。代码是这样的
var rows = xlsx.rows;
for (var i=0; i<rows.length; ++i) {
var escaped = '';
var values = [];
var row = rows[i];
escaped += 'INSERT INTO Main (name, value, enabled) VALUES ';
var name = row['name'];
var val = row['value'];
var enabled = rows['enabled'];
escaped += '(?,?,?);';
values.push(name);
values.push(val);
values.push(enabled);
connection.query(escaped, values);
}
输入所有行需要一分钟以上的时间。当我在一个查询中使用多个语句时,也出现了同样的问题。我唯一能够快速且几乎立即输入所有行的情况是,如果我使用一个字符串和一个条目,也就是
INSERT INTO Main (name, value, enabled) VALUES (?,?,?), (?,?,?), (?,?,?)...
我只是以低效的方式使用查询吗?或者这里的查询速度是否存在实际问题?
【问题讨论】:
-
使用您当前的代码,系统(节点以及 mysql 再次)必须解析查询 2000 次。如果你重写你的东西以使用第二个查询,这只会发生一次。也可能有帮助:stackoverflow.com/a/14259347/1169798
-
问题是这极大地限制了我可以做的事情。我想插入与表 Main 相关的外键,但单次插入很难跟踪这些键
标签: javascript mysql node-mysql