国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

full join語(yǔ)句練習(xí)

php中文網(wǎng)
發(fā)布: 2016-06-07 15:21:59
原創(chuàng)
2063人瀏覽過(guò)

full join語(yǔ)句練習(xí) 需求:將表 A,B,C 合并到一個(gè)結(jié)果集中 表A如圖: [html] N D 1 eeee 3 dddd 5 cccc 7 bbbb 9 aaaa 11 dddd 13 eeee 15 wwww 17 qqqq 19 tttttt 表B如圖:[html] N E 5 rrrrrr 4 fffff 3 ssssss 2 jjjjjj 1 kkkkkk 7 uuuuuu 表C如圖:[html

full join語(yǔ)句練習(xí)

?

需求:將表 A,B,C 合并到一個(gè)結(jié)果集中

表A如圖:

[html] 
N   D  
1   eeee  
3   dddd  
5   cccc  
7   bbbb  
9   aaaa  
11  dddd  
13  eeee  
15  wwww  
17  qqqq  
19  tttttt  
表B如圖:
[html] 
N   E  
5   rrrrrr  
4   fffff  
3   ssssss  
2   jjjjjj  
1   kkkkkk  
7   uuuuuu  
表C如圖:
[html] 
N   F  
5   oooo  
4   lllll  
3   hhss  
2   ddfj  
1   kdsfkkk  
7   sduuu  
8   ewrtwy  
12  sdgfsd  
22  dfgee  
要得到的結(jié)果集如圖:

[html] 
N   D   E   F  
1   eeee    kkkkkk  kdsfkkk  
22          dfgee  
11  dddd           
13  eeee           
2       jjjjjj  ddfj  
5   cccc    rrrrrr  oooo  
4       fffff   lllll  
17  qqqq           
8           ewrtwy  
3   dddd    ssssss  hhss  
7   bbbb    uuuuuu  sduuu  
9   aaaa           
15  wwww           
19  tttttt         
12          sdgfsd  

兩種思路:
1, full join
語(yǔ)句為:
[html] 
select  nvl(a.n,nvl(b.n,c.n)) as N,  
            a.d,b.e,c.f  
from A full join B on A.N=B.N   
       full join c on b.n=c.n;  

2, 先union all ,再列轉(zhuǎn)行
語(yǔ)句為:
[html] 
select n ,max(case when nn='a' then d end) as d,  
          max(case when nn='b' then d end) as e,  
          max(case when nn='c' then d end) as f  
from (  
  select n,d as d,'a' as nn from a  
  union all  
  select n,e as d,'b' as nn from b  
  union all  
  select n,f as d,'c' as nn from c  
)  
group by n;  

實(shí)際的問(wèn)題是我要將70個(gè)左右的窄表連接成一個(gè)寬表,full join 幾乎都編譯不過(guò),為此我對(duì)比了下2種情況的執(zhí)行計(jì)劃
使用 full join 的語(yǔ)句
[html] 
explain plan for  
select  nvl(a.n,nvl(b.n,c.n)) as N,  
            a.d,b.e,c.f  
from A full join B on A.N=B.N full join c on b.n=c.n;  
select * from table(dbms_xplan.display());  
執(zhí)行結(jié)果為
[html] 
Plan hash value: 2877137913  
   
--------------------------------------------------------------------------------  
| Id  | Operation               | Name | Rows  | Bytes | Cost (%CPU)| Time     |  
--------------------------------------------------------------------------------  
|   0 | SELECT STATEMENT        |      |    19 |  1197 |   122   (4)| 00:00:02 |  
|   1 |  VIEW                   |      |    19 |  1197 |   122   (4)| 00:00:02 |  
|   2 |   UNION-ALL             |      |       |       |            |          |  
|*  3 |    HASH JOIN OUTER      |      |    11 |  1342 |    61   (4)| 00:00:01 |  
|   4 |     VIEW                |      |    11 |   825 |    57   (2)| 00:00:01 |  
|   5 |      UNION-ALL          |      |       |       |            |          |  
|*  6 |       HASH JOIN OUTER   |      |    10 |    60 |    29   (4)| 00:00:01 |  
|   7 |        TABLE ACCESS FULL| A    |    10 |    30 |    14   (0)| 00:00:01 |  
|   8 |        TABLE ACCESS FULL| B    |     5 |    15 |    14   (0)| 00:00:01 |  
|*  9 |       HASH JOIN ANTI    |      |     1 |     6 |    29   (4)| 00:00:01 |  
|  10 |        TABLE ACCESS FULL| B    |     5 |    15 |    14   (0)| 00:00:01 |  
|  11 |        TABLE ACCESS FULL| A    |    10 |    30 |    14   (0)| 00:00:01 |  
|  12 |     TABLE ACCESS FULL   | C    |     9 |   423 |     3   (0)| 00:00:01 |  
|* 13 |    HASH JOIN ANTI       |      |     8 |   272 |    61   (4)| 00:00:01 |  
|  14 |     TABLE ACCESS FULL   | C    |     9 |   189 |     3   (0)| 00:00:01 |  
|  15 |     VIEW                |      |    11 |   143 |    57   (2)| 00:00:01 |  
|  16 |      UNION-ALL          |      |       |       |            |          |  
|* 17 |       HASH JOIN OUTER   |      |    10 |    60 |    29   (4)| 00:00:01 |  
|  18 |        TABLE ACCESS FULL| A    |    10 |    30 |    14   (0)| 00:00:01 |  
|  19 |        TABLE ACCESS FULL| B    |     5 |    15 |    14   (0)| 00:00:01 |  
|* 20 |       HASH JOIN ANTI    |      |     1 |     6 |    29   (4)| 00:00:01 |  
|  21 |        TABLE ACCESS FULL| B    |     5 |    15 |    14   (0)| 00:00:01 |  
|  22 |        TABLE ACCESS FULL| A    |    10 |    30 |    14   (0)| 00:00:01 |  
--------------------------------------------------------------------------------  
   
Predicate Information (identified by operation id):  
---------------------------------------------------  
   
   3 - access("B"."N"="C"."N"(+))  
   6 - access("A"."N"="B"."N"(+))  
   9 - access("A"."N"="B"."N")  
  13 - access("B"."N"="C"."N")  
  17 - access("A"."N"="B"."N"(+))  
  20 - access("A"."N"="B"."N")  
   
Note  
-----  
   - dynamic sampling used for this statement  

使用union all 的語(yǔ)句
[html] 
explain plan for  
select n ,max(case when nn='a' then d end) as d,  
          max(case when nn='b' then d end) as e,  
          max(case when nn='c' then d end) as f  
from (  
   select n,d as d,'a' as nn from a  
   union all  
   select n,e as d,'b' as nn from b  
   union all  
   select n,f as d,'c' as nn from c  
)  
group by n;  
select * from table(dbms_xplan.display());  

執(zhí)行結(jié)果為:
[html] 
1   Plan hash value: 1237158055  
2      
3   -----------------------------------------------------------------------------  
4   | Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |  
5   -----------------------------------------------------------------------------  
6   |   0 | SELECT STATEMENT     |      |    24 |   576 |    32   (4)| 00:00:01 |  
7   |   1 |  HASH GROUP BY       |      |    24 |   576 |    32   (4)| 00:00:01 |  
8   |   2 |   VIEW               |      |    24 |   576 |    31   (0)| 00:00:01 |  
9   |   3 |    UNION-ALL         |      |       |       |            |          |  
10  |   4 |     TABLE ACCESS FULL| A    |    10 |    30 |    14   (0)| 00:00:01 |  
11  |   5 |     TABLE ACCESS FULL| B    |     5 |    15 |    14   (0)| 00:00:01 |  
12  |   6 |     TABLE ACCESS FULL| C    |     9 |   189 |     3   (0)| 00:00:01 |  
13  -----------------------------------------------------------------------------  
14     
15  Note  
16  -----  
17     - dynamic sampling used for this statement  
登錄后復(fù)制

?

對(duì)比2種處理方式,union all 的方式明顯優(yōu)于 full join。也可以看出簡(jiǎn)單的sql語(yǔ)句效率不一定好。

?

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)