为什么查询需要这么长时间?

问题描述 投票:0回答:1

这个简单的查询持续了令人印象深刻的 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
);

为什么会发生这种情况?我做了一个简单的连接查询,这直接杀死了我的计算机,我不得不强制它关闭

sql mysql database join inner-join
1个回答
0
投票

您可能遇到过一个不起眼的 MySQL 怪癖,我几年前也遇到过。在您的查询中,我看到您在

WHERE
子句中使用子查询,如下所示:

WHERE c.value != (SELECT SUM(total) AS calc FROM venda01 WHERE c.rv = v.rv)

与其他数据库相比,MySQL 很难优化

WHERE

 子句中的子查询。解决方案是将该子查询转换为另一个 
INNER JOIN
 语句,而不是将其放在 
WHERE
 子句中。

© www.soinside.com 2019 - 2024. All rights reserved.