在Mysql中通过子查询优化组

Rob*_*_UK 8 mysql performance group-by subquery

这是一个非常简单的查询.

如果我单独运行查询它不是那么慢但是当我将它们组合起来时它非常慢.

我不确定如何优化它.我基本上只想要多次退款.所以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);
Run Code Online (Sandbox Code Playgroud)

解释的结果已作为图像附加

在此输入图像描述

And*_*y M 1

我想,这更像是重写而不是优化,但无论如何,这就是我会尝试的:

SELECT 
  r.* 
FROM faultrefunds_v2 r
WHERE EXISTS (
  SELECT *
  FROM faultrefunds_v2 r1 
  WHERE r1.faultid = r.faultid
    AND r1.id <> r.id
);
Run Code Online (Sandbox Code Playgroud)