【发布时间】:2017-05-21 15:42:41
【问题描述】:
哪种方法最快将查询获取到MYSQL,然后返回输出:
console.log('查询完成', 结果)"
还有更好的方法吗?请解释你的答案!
谢谢!
方法一:
var connection = mysql.createConnection({multipleStatements: true});
connection.query('SELECT ?; SELECT ?', [1, 2], function(err, results) {
if (err) throw err;
console.log('queries done', results);
});
方法二:
const Db = mysql.createPool({
connectionLimit: 7,
dateStrings: true,
multipleStatements: true
});
Db.getConnection(function(err, connection) {
if(err) console.log(err);
connection.query(`
SELECT "1" AS "first";
SELECT "2" AS "second";`, function(err, results) {
connection.release();
if(err) console.log(err);
console.log('queries done', results);
}
);
});
方法三:
const Db = mysql.createPool({
connectionLimit: 7,
dateStrings: true,
multipleStatements: true
});
Db.getConnection(function(err, connection) {
async.parallel([
function(callback) {
connection.query(`
SELECT "1" AS "first"`, function(err, done) {
callback(err, done);
}
);
},
function(callback) {
connection.query(`
SELECT "2" AS "second"`, function(err, done) {
callback(err, done);
}
);
}
], function(err, results) {
connection.release();
if(err) console.log(err);
console.log('queries finished', results);
});
});
方法四:
const Db = mysql.createPool({
connectionLimit: 7,
dateStrings: true,
multipleStatements: true
});
async.parallel([
function(callback) {
Db.getConnection(function(err, connection) {
connection.query(`
SELECT "1" AS "first"`, function(err, done) {
connection.release();
callback(err, done);
}
);
});
},
function(callback) {
Db.getConnection(function(err, connection) {
connection.query(`
SELECT "2" AS "second"`, function(err, done) {
connection.release();
callback(err, done);
}
);
});
}
], function(err, results) {
if(err) console.log(err);
console.log('queries finished', results);
});
而且我没有发布,但是方法 3 和 4 也可以在没有连接池的情况下完成。还有关于使用 npm 模块异步的承诺,什么是最快的,为什么!?谢谢。
【问题讨论】:
-
您可以很简单地使用
console.time('query')和console.timeEnd('query')自己解决这个问题。我建议每个方法至少运行 10 次以获得平均值。它应该会给你你正在寻找的答案。 -
我不知道这个!!太棒了。
标签: mysql node.js node-mysql async.js