我正在处理有关优化查询的任务。改进方法之一是使用 WITH 子句。我注意到它做得很好,并且缩短了执行时间,但我现在不确定,我什么时候应该使用 WITH 子句,使用它是否有任何风险?
这是我正在处理的查询之一:
WITH MY_TABLE AS
( SELECT PROD_KY,
sum(GROUPISPRIVATE) AS ISPRIVATE,
sum(GROUPISSHARED) AS ISSHARED
FROM
(
SELECT GRP_PROD_CUSTOMER.PROD_KY,
1 as ISPRIVATE,
0 as ISSHARED
FROM CUSTOMER
JOIN GRP_CUSTOMER ON GRP_CUSTOMER.CUST_KY = CUSTOMER.CUST_KY
JOIN GRP_PROD_CUSTOMER ON GRP_PROD_CUSTOMER.GRP_KY = GRP_CUSTOMER.GRP_KY
GROUP BY GRP_PROD_CUSTOMER.PROD_KY
)
GROUP BY PROD_KY
)
SELECT * FROM MY_TABLE;
Run Code Online (Sandbox Code Playgroud) oracle query-optimization common-table-expression database-performance