将子查询添加到from子句时永远不会结束查询

时间:2016-08-19 18:02:05

标签: sql postgresql

由于某种原因,以下查询永远不会结束。但是,如果我删除from子句中的最后一个子查询,它将在500毫秒内运行

关于为什么的任何想法?

select
    new.app_id,
    'support' as domain,
    'summary' as type,
    90 as interval,
    json_build_object(
        'new', count(new),
        'closed', count(closed),
    ) as data
from (
    SELECT * from conversations c
    WHERE c.inserted_at::date > (current_date - (90  || ' days')::interval)::date
) as new,
(
    SELECT * from conversations c
    WHERE c.inserted_at::date > (current_date - (90  || ' days')::interval)::date
) as closed
group by new.app_id

1 个答案:

答案 0 :(得分:1)

您没有将两张桌子连在一起,这可能导致它运行了很长时间。它基本上是按照你当前运行它的方式在两个表之间进行每个组合。

你需要加入from中的两个subquerys并使用某种JOIN ON来节省你自己的时间。

可能加入new.App_id = closed.app_id?