这是一个非常直接的查询。
如果我单独运行查询,它并没有那么慢,但是当我将它们组合起来时,它非常慢。
我不确定如何优化它。我基本上只想显示多次退款。所以 where faultid
存在不止一次。
SELECT
r.*
FROM
faultrefunds_v2 r
WHERE
r.id IN (SELECT r1.id
FROM faultrefunds_v2 r1
GROUP BY faultid
HAVING count(r1.faultid) > 1);
解释的结果已作为图像附加
最佳答案
IN
子句的使用方式会很慢,请改用 JOIN
:
SELECT r.* FROM (
SELECT r1.id AS id
FROM faultrefunds_v2 r1
GROUP BY faultid
HAVING count(r1.faultid) > 1
) AS ids
LEFT JOIN faultrefunds_v2 AS r
ON( ids.id = r.id )
关于mysql - 在Mysql中通过子查询优化分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965766/