小编eld*_*inT的帖子

我们什么时候使用 WITH 子句,它的主要好处是什么?

我正在处理有关优化查询的任务。改进方法之一是使用 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

3
推荐指数
1
解决办法
4049
查看次数