1

我有一个这样的查询:

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

请问有什么想法吗?

4

1 回答 1

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
于 2013-09-22T21:04:14.457 回答