繁体   English   中英

SELECT 查询需要太多时间来处理

[英]SELECT query take too much time to process

以下 MySQL 查询花费了太多时间。 它需要 24 秒。 并且总记录不超过每张表 15000 请指导我更快

谢谢

select  c1.code,
        ( SELECT  COALESCE(sum(i.total_amount),0)
            FROM  invoice as i
            WHERE  i.customer_code= c1.code
        )-
        ( SELECT  COALESCE(sum(p.amount),0)
            FROM  collection as p
            where  p.customer_code = c1.code
        )-
        ( SELECT  COALESCE(sum(CN.amount),0)
            FROM  cr_note as CN
            where  CN.customer_code= c1.code
        ) as rem_Balance
    from  customer as c1

您可以通过将子查询替换为具有左连接的查询来加快速度,如下所示:

WITH allInvoice AS (SELECT customer_code AS code, SUM(total_amount) AS amount FROM invoice GROUP BY customer_code),
     allCollection AS (SELECT customer_code AS code, SUM(amount) AS amount FROM collection GROUP BY customer_code),
     allNote AS (SELECT customer_code AS code, SUM(amount) AS amount FROM cr_note GROUP BY customer_code)
SELECT customer.code,
       (COALESCE(allInvoice.amount) - COALESCE(allCollection.amount) - COALESCE(allNote.amount)) AS rem_Balance
FROM customer
         LEFT JOIN allInvoice ON allInvoice.code = customer.code
         LEFT JOIN allCollection ON allCollection.code = customer.code
         LEFT JOIN allNote ON allNote.code = customer.code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM