从命令行优化 MySQL 查询

Optimizing MySQL queries from command line

我想优化一些 MySQL 查询。

我在我的应用程序中使用 knex 来构建查询。使用 toSQL(),我能够以如下格式获得 SQL:

{
   sql: 'SELECT * FROM Table WHERE id = ?',
   bindings: [1]
}

我的问题是优化这些查询的最佳方式是什么?如果我将 sql 复制到命令行中,以便与 EXPLAIN 一起使用,我需要一种绑定参数的方法。我怎样才能做到这一点?

或者,有没有比使用 MySQL shell 检查优化器的查询计划更好的工具?

编辑:我刚刚将查询复制到文本编辑器并手动提供所有参数绑定。

我写了一个小的 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"`

注意 - 这种方法在生产环境中使用不安全