我有一个这样的查询:
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
在未索引的临时表上执行该子句。我想我需要在完全加入之前执行 WHERE
请问有什么想法吗?