2 回答

TA貢獻1993條經(jīng)驗 獲得超6個贊
oracle中多表連接有很多種方式:
1、表與表連接有三種方式Nested loop, Hash join, Sort merge join。
2、Nested Loop就是循環(huán)嵌套的連接方法,對于被連接子集都是比較小的話,嵌套循環(huán)就是比較好的選擇。在嵌套中,內(nèi)表被外表驅(qū)動,外表做一次循環(huán),內(nèi)表針對外表的每一行做循環(huán)。
3、這種表的返回結(jié)果集不能太大,否則就效率實在太低的,而且還要用在表都有索引的情況下才行的。
4、Sort Merge Join 用在數(shù)據(jù)沒有索引,并且數(shù)據(jù)必須是都排序號的情況。
5、總之,兩表之間相連,會根據(jù)表之間的不同情況選擇不同的連接方式,連接其實就是做表之間每行數(shù)據(jù)的遍歷,連之前都要做好準(zhǔn)備,有么用索引,要么用已排序號的表,要么就用hash算法,不存在什么都不準(zhǔn)備的純遍歷循環(huán)。
6、三種連接使用前提,當(dāng)表都排序號的話用Sort Merge Join連接,當(dāng)兩表都差不多大而且都還有索引就用Nested Loop的嵌套連接,當(dāng)沒有索引也沒排序,而且數(shù)據(jù)量大的情況下就用這個hash算法進行相連。
- 2 回答
- 0 關(guān)注
- 685 瀏覽
添加回答
舉報