这个简单的查询持续了令人印象深刻的 15 分钟
SELECT *
FROM cfe01 c
INNER JOIN venda01 v ON c.rv = v.rv
WHERE c.value != (
SELECT SUM(total) AS calc
FROM venda01
WHERE c.rv = v.rv
);
为什么会发生这种情况?我做了一个简单的连接查询,这直接杀死了我的计算机,我不得不强制它关闭
您可能遇到过一个不起眼的 MySQL 怪癖,我几年前也遇到过。在您的查询中,我看到您在
WHERE
子句中使用子查询,如下所示:
WHERE c.value != (SELECT SUM(total) AS calc FROM venda01 WHERE c.rv = v.rv)
与其他数据库相比,MySQL 很难优化 WHERE
子句中的子查询。解决方案是将该子查询转换为另一个
INNER JOIN
语句,而不是将其放在
WHERE
子句中。