【发布时间】:2020-05-06 14:58:57
【问题描述】:
这是我的代码:
SELECT m.id, (SELECT count(r.id)
FROM reports as r
WHERE r.date BETWEEN NOW()-INTERVAL '7 days' AND NOW()
and r.decision = 'ACCEPTED'
and r.customer_id in (SELECT c.id
FROM customers as c
WHERE c.manager_id = m.id)) as count
FROM managers as m;
表格是经理、客户和报告。我想为每位经理选择他的所有客户所做的报告数量(使用选定的属性)。这段代码的问题在于它花费了太多时间,并且不知何故找不到更好的方法来构建这个查询。你有什么想法吗?
【问题讨论】:
-
您是否在谓词列上设置了索引?在您的情况下,它是
r.date、r.customer_id和c.manager_id -
是的,我忘了提,但是我提了。
标签: sql postgresql query-performance