嵌套选择查询对于结果而言太慢

时间:2019-03-10 06:42:55

标签: java mysql sql database database-administration

以下查询对于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

有人能助一臂之力吗?

1 个答案:

答案 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

这仅执行一次聚合。而且我还应该利用相同的索引。