生成报告时向我报告了高CPU利用率问题。在报表相关过程中,已经确定有6到7种查询(每个查询的逻辑不同)通过执行SQL查询中所示的UNION ALL来执行。每个查询使用10到12个表并相互联接。并且所有输出列都引用了每个查询中使用的几乎所有表。
整个查询执行时间大约为30秒到40秒。查询的性能没有问题。但是,对于该查询,CPU利用率仅为50%。如果多个用户同时生成相同报告,则CPU利用率>99%。
我需要关于如何降低CPU使用率的建议。
注:提供样例查询仅供参考,不执行。
SELECT SUM(QTY) QTY, SUM(RATE) RATE, COALESCE(CITY_ADDR,STATE_ADDR) ADDR,
LISTAGG(DISTINCT PRODUCT, ', ') WITHIN GROUP(ORDER BY PRODID) PRODUCT
C.CUSTOEMR
FROM TBLINVENTORY I
INNER JOIN TBLPRODUCT P
INNER JOIN TBLCUSTOMER C
LEFT JOIN TBLADDRESS A
--- LIKE THIS JOINING 12 TABLES
WHERE I.ID = 1234 AND C.CUSTOMERID = 4567
GROUP BY ADDR,PRODUCT, CUSTOMER
UNION ALL
SELECT SUM(QTY) QTY, SUM(RATE) RATE, COALESCE(CITY_ADDR,STATE_ADDR) ADDR,
LISTAGG(DISTINCT PRODUCT, ', ') WITHIN GROUP(ORDER BY PRODID) PRODUCT
C.CUSTOEMR
FROM TBLINVENTORY I
INNER JOIN TBLPRODUCT P
INNER JOIN TBLCUSTOMER C
LEFT JOIN TBLADDRESS A
--- LIKE THIS JOINING 12 TABLES
WHERE I.ID = 1234 AND C.CUSTOMERID = 4567
GROUP BY ADDR,PRODUCT, CUSTOMER
UNION ALL
...
暂无答案!
目前还没有任何答案,快来回答吧!