澳门金沙vipwith优化妙用

复制代码 代码如下:with alias_name1 as
(subquery1), alias_name2 as (subQuery2), …… alias_nameN as (subQueryN)
select col1,col2…… col3from alias_name1,alias_name2……,alias_nameN

C

1

当查询中多次用到某一部分时,可以用Oracle
with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。

–语法:

复制代码 代码如下:WITH Q1 AS (SELECT 3 +
5 S FROM DUAL), Q2 AS (SELECT 3 * 5 M FROM DUAL), Q3 AS (SELECT S, M, S

/*
with   
alias_name1 as    (subquery1),  
alias_name2 as    (subQuery2),  
……  
alias_nameN as    (subQueryN)  
select col1,col2…… col3   
     from alias_name1,alias_name2……,alias_nameN 
    
     
如:
WITH  
Q1 AS (SELECT 3 + 5 S FROM DUAL),  
    Q2 AS (SELECT 3 * 5 M FROM DUAL),  
    Q3 AS (SELECT S, M, S + M, S * M FROM Q1, Q2)  
SELECT * FROM Q3;      

一般语法格式:

*/ 
          

输出结果:复制代码 代码如下:181523120

好处:    
          1.
结构清晰,预先定义(在本文《with自居的清晰.sql》中清晰可见。
          2.
性能更好,一份复制(类似SYS_TMP…),多份使用,可参见《with子句的高效.sql》。
          3.
代码修改不必修改多处,可参见《with子句的高效.sql》中提到的搞笑案例。