节点MySQL以最快的速度执行多个查询
哪个是最快速的方法获取到MYSQL的查询,然后返回到输出:
console.log('查询完成',结果)“
有没有更好的方法? 请解释你的答案!
谢谢!
方法1:
var connection = mysql.createConnection({multipleStatements: true}); connection.query('SELECT ?; SELECT ?', [1, 2], function(err, results) { if (err) throw err; console.log('queries done', results); });
方法2:
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); } ); });
方法3:
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); }); });
方法4:
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模块asynchronous的承诺,什么是最快的,为什么? 谢谢。
在我的应用程序中使用3个真实查询的上述四个选项中,每个需要执行大约1-3秒,方法3对于任何感兴趣的人来说都是最快的。
方法1和2大约慢了1/2秒,而方法4只稍微慢了一点。
编辑:我做了这些基准通过在上面的评论中使用console.time('query')
build议。