如何使查询更快

时间:2020-05-06 14:58:57

标签: sql postgresql query-performance

这是我的代码:

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;

表是经理,客户和报告。我想为每位经理选择所有其客户(具有选定属性)的报告数量。这段代码的问题是,它花费了太多时间,并且以某种方式找不到构建此查询的更好方法。你有什么主意吗?

1 个答案:

答案 0 :(得分:1)

我认为,这三个表之间的标准内部联接具有在注释中提到的reports.datereports.customer_idcustomers.manager_id列上定义的索引(还要考虑{{1 }}和managers.id列应该是已经在其上具有唯一索引的主键),对于性能而言就足够了:

customer.id