我有一个MySQL查询返回~11,000个结果,然后需要对每个结果运行进一步的查询。在代码运行时,它不允许其他用户登录网站。
我所看到的潜在问题是使用回调函数或foreach循环,但这并没有帮助。
代码如下所示:
query(sql, params, function(err, result) {
result.foreach(
query(generate_sql(result), params, function(err, result) {
//do stuff
});
)
});
答案 0 :(得分:0)
我建议您使用Promises
然后你的代码会是这样的:
var Promise = require('bluebird');
_query = Promise.promisify(query);
_query(sql, params)
.map(function(singleRow) {
// you get here every single row of your query
})
.then(function() {
// you are finished
});
答案 1 :(得分:0)
你的问题是有很多疑问。 11,001查询是一个非常大的数字,我不认为MySQL可以并行处理该数量的查询。 另一种方法是使用子查询来处理您的问题。