如何使用node.js上的mysql2包使用预备的查询

文档中给出的示例如下所示:

var mysql = require('mysql2'); var connection = mysql.createConnection({ user: 'test', database: 'test'}); connection.execute('SELECT 1+? as test1', [10], function(err, rows) { // }); 

这里的想法是“?” 在查询中被replace为“10”的值。 此示例显示如何使用重置值为“10”的查询一次。 我如何多次使用准备好的查询和不同的replace值? 这里的希望是编译好的查询已经被编译,所以对这个查询的多次调用不会导致每次运行时编译查询的性能。

谢谢 – 加里

它看起来像声明是真正准备和caching,如源代码build议:

 Execute.prototype.start = function(packet, connection) { var cachedStatement = connection.statements[this.query]; if (!cachedStatement) { // prepare first connection.writePacket(new Packets.PrepareStatement(this.query).toPacket(1)); } else { this.statementInfo = cachedStatement; return this.doExecute(connection); } return Execute.prototype.prepareHeader; }; 

这是由这个对node-mysql2的问题的评论所证实的,由该库的作者讨论了node-mysql2

它准备了一次,可以使用多次。

这个注释线程还讨论了准备好的语句的驱逐策略:LRU或MRU,这与node-mysql2确实准备和caching语句的事实一致(甚至在源代码中这被称为TODO) 。