以下查询对于10条记录工作正常,但要花更多时间记录更多信息:
SELECT s.a, s.b, s.c
FROM
(SELECT abc FROM h1
WHERE a IN
(SELECT a FROM h1 GROUP BY a HAVING COUNT(DISTINCT b) = 1 )) s
有人能助一臂之力吗?
答案 0 :(得分:0)
首先,请勿在{{1}}中使用不必要的子查询,因此请这样写:
FROM
这仍然会很糟糕。您想要的是SELECT h.a, h.b, h.c
FROM h1 h
WHERE a IN (SELECT hh.a FROM h1 hh GROUP BY hh.a HAVING COUNT(DISTINCT hh.b) = 1);
值具有单个a
的所有行。所以:
b
好多了。然后,对于此查询,您需要在select h.*
from h1 h
where not exists (select 1
from h1 hh
where hh.a = h.a and hh.b <> h.b
);
上建立索引。
您也可以使用h1(a, b)
来编写此代码:
JOIN
这仅执行一次聚合。而且我还应该利用相同的索引。