日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nested Loop,Sort Merge Join,Hash Join

發(fā)布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nested Loop,Sort Merge Join,Hash Join 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

三種連接工作方式比較:

Nested loops?工作方式是從一張表中讀取數(shù)據(jù),訪問另一張表(通常是索引)來做匹配,nested loops適用的場合是當一個關(guān)聯(lián)表比較小的時候,效率會更高。

Merge Join?是先將關(guān)聯(lián)表的關(guān)聯(lián)列各自做排序,然后從各自的排序表中抽取數(shù)據(jù),到另一個排序表中做匹配,因為merge join需要做更多的排序,所以消耗的資源更多。?通常來講,能夠使用merge join的地方,hash join都可以發(fā)揮更好的性能。

Hash join的工作方式是將一個表(通常是小一點的那個表)做hash運算,將列數(shù)據(jù)存儲到hash列表中,從另一個表中抽取記錄,做hash運算,到hash列表中找到相應(yīng)的值,做匹配。

?

NESTED LOOP?嵌套循環(huán)連接一般用在連接的表中有索引,并且索引選擇性較好的時候.
1、塊嵌套循環(huán)連接,就是把已經(jīng)放在內(nèi)存的兩個關(guān)系塊全部連接完成后再進行下一數(shù)據(jù)庫塊的比較,減少內(nèi)存中數(shù)據(jù)塊的IO;

2、索引嵌套循環(huán)連接,如果內(nèi)層關(guān)系有索引,使用索引代替文件掃描,如果兩個關(guān)系均有索引,一般把元組較少的關(guān)系作為外層關(guān)系時效果好。

嵌套循環(huán)連接的工作方式:

在嵌套循環(huán)連接中,Oracle從第一個行源中讀取第一行,然后和第二個行源中的數(shù)據(jù)進行對比。所有匹配的記錄放在結(jié)果集中,然后Oracle將讀取第一個行源中的下一行。按這種方式直至第一個數(shù)據(jù)源中的所在行都經(jīng)過處理。

??? ??? 在驅(qū)動行源表(就是您正在查找的記錄)較小、或者內(nèi)部行源表已連接的列有惟一的索引或高度可選的非惟一索引時, 嵌套循環(huán)連接效果是比較理想的。嵌套循環(huán)連接比其他連接方法有優(yōu)勢,它可以快速地從結(jié)果集中提取第一批記錄,而不用等待整個結(jié)果集完全確定下來。

nested loop就是掃描一個表,每讀到一條記錄,就根據(jù)索引去另一個表里面查找,沒有索引一般就不會是 nested loops。?一般在nested loop中,?驅(qū)動表滿足條件結(jié)果集不大,被驅(qū)動表的連接字段要有索引,這樣就走nstedloop。如果驅(qū)動表返回記錄太多,就不適合nested loops了。如果連接字段沒有索引,則適合走hash join,因為不需要索引。?可用ordered提示來改變CBO默認的驅(qū)動表,可用USE_NL(table1, table2)提示來強制使用nested loop。

select e.empno, e.ename, e.job, d.dname

from emp e, dept d

where e.deptno = d.deptno and e.empno = 7900;

解析:在這個查詢中,優(yōu)化器選擇emp作為驅(qū)動表,根據(jù)唯一性索引PK_EMP快速返回符合條件empno為7900的記錄,然后再與被驅(qū)動表dept的deptno關(guān)聯(lián)查詢相應(yīng)的dname并最終返回結(jié)果集。由于dept表上面的deptno有唯一索引PK_DEPT,故查詢能夠快速地定位deptno對應(yīng)dname為SALES的記錄并返回。

嵌套循環(huán)連接驅(qū)動表的選擇也是連接中需要著重注意的一點,有一個常見的誤區(qū)是驅(qū)動表要選擇小表,其實這是不對的。假如有兩張表A、B關(guān)聯(lián)查詢,A表有1000000條記錄,B表有10000條記錄,但是A表過濾出來的記錄只有10條,這時候顯然用A表當做驅(qū)動表是比較合適的。因此驅(qū)動表是由過濾條件限制返回記錄最少的那張表,而不是根據(jù)表的大小來選擇的。

?

SORT MERGE JOIN排列合并連接(Sort Merge join?用在沒有索引,并且數(shù)據(jù)已經(jīng)排序的情況.)

???????? 在排列合并連接中,Oracle分別將第一個源表、第二個源表按它們各自要連接的列排序,然后將兩個已經(jīng)排序的源表合并。如果找到匹配的數(shù)據(jù),就放到結(jié)果集中。

??? ????在缺乏數(shù)據(jù)的選擇性或者可用的索引時,或者兩個源表都過于龐大(超過記錄數(shù)的5%),排序合并連接將比嵌套循環(huán)連更加高效。但是,排列合并連接只能用于等價連接(WHERE D.deptno=E.dejptno,而不是WHERE D.deptno>=E.deptno)。排列合并連接需要臨時的內(nèi)存塊,以用于排序(如果SORT_AREA_SIZE設(shè)置得太小的話)。這將導致在臨時表空間占用更多的內(nèi)存和磁盤I/O。

sort merge join的操作通常分三步:

1、對連接的每個表做table access full;

2、對table access full的結(jié)果進行排序。

3、進行merge join對排序結(jié)果進行合并。

在全表掃描比索引范圍掃描再通過rowid進行表訪問更可取的情況下,merge join會比nested loops性能更佳。當表特別小或特別巨大的時候,實行全表訪問可能會比索引范圍掃描更有效。mrege join的性能開銷幾乎都在前兩步。

?

HASH JOIN哈希連接?(Hash join在兩個表的數(shù)據(jù)量差別很大的時候.)

???????? 當內(nèi)存能夠提供足夠的空間時,哈希(HASH)連接是Oracle優(yōu)化器通常的選擇。散列連接是CBO做大數(shù)據(jù)集連接時的常用方式,優(yōu)化器使用兩個表中較小的表(或數(shù)據(jù)源)利用連接鍵在內(nèi)存中建立散列表,然后掃描較大的表并探測散列表,找出與散列表匹配的行。

只有在數(shù)據(jù)庫初始化參數(shù)HASH_JOIN_ENABLED設(shè)為True,并且為參數(shù)PGA_AGGREGATE_TARGET設(shè)置了一個足夠大的值的時候,Oracle才會使用哈希邊連接。

這種方式適用于較小的表完全可以放于內(nèi)存中的情況,這樣總成本就是訪問兩個表的成本之和。但是在表很大的情況下并不能完全放入內(nèi)存,這時優(yōu)化器會將它分割成若干不同的分區(qū),不能放入內(nèi)存的部分就把該分區(qū)寫入磁盤的臨時段,此時要有較大的臨時段從而盡量提高I/O 的性能。也可以用USE_HASH(table_name1 table_name2)提示來強制使用散列連接。

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/toughhou/p/3778741.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Nested Loop,Sort Merge Join,Hash Join的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久99视频精品 | 香蕉久久夜色精品升级完成 | 中国少妇毛片 | 亚洲国产剧情在线观看 | 国产精品骚 | 香蕉视频国产 | 亚洲蜜臀av乱码久久精品蜜桃 | xxxxx亚洲| 谁有免费的黄色网址 | 国产福利在线观看视频 | jvid乐乐| 色香影视 | 成人在线视频一区二区 | 日韩精品中文在线 | 少妇久久久久久被弄高潮 | 免费福利小视频 | 亚洲精品a| 成人自拍视频在线观看 | 男人手机天堂 | 最新av观看 | 147人体做爰大胆图片成人 | www.伊人| 一本视频 | 久久久资源 | 视频一区亚洲 | 欧美激情h | 亚洲综合精品视频 | 亚洲国产精品一区二区久久hs | av国产免费| 性插插视频 | 喷水在线观看 | 爆乳熟妇一区二区三区 | 国产伦精品一区二区三区视频黑人 | 亚洲国产亚洲 | 国产女人爽到高潮a毛片 | 亚洲精品九九 | a点w片 | 免费毛片小视频 | 99久久99久久久精品棕色圆 | 四虎在线观看视频 | 国产精品久久婷婷 | 884aa四虎影成人精品一区 | 久久久www成人免费无遮挡大片 | 五月婷婷丁香 | 亚洲精品国 | 在线一二三区 | 在线污视频| 国产精品videossex久久发布 | 中文字幕精品无码一区二区 | 瑟瑟久久| 爱搞国产 | 69xx欧美| 性插动态视频 | 国产男同gay网站 | 中文字幕免费高 | 美国一级特黄 | 男生尿隔着内裤呲出来视频 | av在线播放观看 | 大香伊人中文字幕精品 | 国产精品系列在线 | 国产欧美一区二区三区鸳鸯浴 | 日韩色在线 | 久久666| 成人久久久久久 | 性的免费视频 | 日本性生活一级片 | 久久一区二区三区精品 | av片网址| 精品一区不卡 | 少妇一级淫片免费放2 | 欧美乱妇视频 | 亚洲精品国产精品国自产 | 锕锕锕锕锕锕锕锕 | 久久久久香蕉视频 | 成人黄色短片 | av毛片大全 | 国产精品福利网站 | 91麻豆影院 | 黄色小视频国产 | 亚洲一区二区三区加勒比 | 男人操女人下面视频 | 亚洲精品三区 | 99视频在线 | 色播综合| 久久躁日日躁aaaaxxxx | 99热在线观看免费 | 超薄肉色丝袜一二三 | 久久精品欧美 | 日韩精品一区二区av | 欧美色亚洲 | 国产精品第七页 | a级片免费看 | 中文字幕二 | 公交顶臀绿裙妇女配视频 | 九九热视频在线播放 | 三极片黄色 | 日韩大片在线 | 男女爽爽 | 亚洲欧洲精品在线 |