我的任务是支持一个非常缓慢的客户端的应用程序。我启用了 MySQL slow_query_log 并发现了一些似乎是罪魁祸首的查询。我对这个查询在做什么有点困惑,但任何关于如何重写它的建议都会有所帮助。
SELECT
table_a.id AS table_a_id_1,
table_a2.id AS table_a_id_2
FROM
table_a,
table_b
LEFT JOIN
table_a AS table_a2
ON
table_a.value = table_a2.value
WHERE
table_a.value_id = 112 AND
table_a2.value_id = 113 AND
table_a.status != table_a2.status AND
table_a.id = table_b.id;
对我来说,查询似乎是从一个表中两次选择相同的数据,然后与所选数据进行一些比较,以及与 table_b 执行连接。这是 MySQL 中引用此查询执行的日志。
Query_time: 160.854398
Lock_time: 0.000139
Rows_sent: 12
Rows_examined: 10339025
您可以提供的任何建议都会有所帮助!