如何通过联合所有操作来降低同时运行的查询的CPU使用率

e3bfsja2  于 2022-10-04  发布在  Oracle
关注(0)|答案(0)|浏览(197)

生成报告时向我报告了高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
...

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题