我想优化一些MySQL查询。
我正在使用knex在我的应用程序中构造查询。使用toSQL(),我可以获得如下格式的SQL:
{
sql: 'SELECT * FROM Table WHERE id = ?',
bindings: [1]
}我的问题是,优化这些查询的最佳方法是什么?如果我将sql复制到命令行中,以便与一起使用EXPLAIN,我需要一种绑定参数的方法。我怎样才能做到这一点呢?
或者,有比使用MySQL外壳检查优化器的查询计划更好的工具吗?
编辑:我只是将查询复制到文本编辑器中,并手动提供所有参数绑定。
发布于 2021-02-25 21:46:46
我已经编写了一个小的js方法来完成绑定
function prepareStatment(obj) {
let i = 0;
const sql = obj.sql.replace(/\?/g, () => JSON.stringify(obj.bindings[i++]));
copy(sql); // works only if you run it in chromes console.
return sql;
}
prepareStatment({
sql: 'SELECT * FROM Table WHERE id = ?',
bindings: [1]
}) // will return `SELECT * FROM Table WHERE id = "1"`注意-此方法在生产环境中使用不安全
https://stackoverflow.com/questions/66347862
复制相似问题