mysql - 以一种有效的方式,MySQL试图重用子查询的结果

  显示原文与译文双语对照的内容
0 0

我有一个这样的查询:


SELECT q,COUNT(x),y,
 (SELECT i FROM (SELECT q,w FROM tableA WHERE conds)
 JOIN tableC ON (cond)
 WHERE id = t.q)
FROM (SELECT q,w FROM tableA WHERE conds) t
JOIN tableB
GROUP BY q

子查询 (SELECT q,w FROM tableA WHERE conds) 返回几百行。在 GROUP BY q 之后,左侧有 20行。

子查询 (SELECT i FROM (SELECT q,w FROM tableA WHERE conds) join tableC WHERE id = t.q) 使用与上面的子查询相同的子查询,然后根据当前分组的q 值选择结果的一部分。

我的问题似乎是。 因为我似乎无法把它放在 WHERE id = t.q(SELECT q,w, FROM Table A WHERE conds) 我只能猜到,对于 q的每个唯一值,查询都在运行,它生成数百行,然后在索引的临时表中执行 WHERE 子句。 我想我需要在完全 Join 之前执行

请随意?

时间: 原作者:

0 0

这个查询可以能会产生相同的结果,但是这个问题中的信息缺少,谁可以确定?


Select 
 q,
 count(x),
 y,
 i
From 
 tableA a
 inner join
 tableC c
 on cond and c.id = a.q
 cross join -- is this an inner join?
 tableB b
Where
 conds
Group By
 q, 
 y, 
 i

原作者:
...