您好,登錄后才能下訂單哦!
這篇文章主要介紹了hash join構(gòu)建位圖的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
hash join的邏輯
-- 全表掃描小表,并把關(guān)聯(lián)字段的值取出,在pga里構(gòu)建hash table。
-- 遍歷大表,根據(jù)掃描的結(jié)果按照關(guān)聯(lián)字段執(zhí)行相同的hash函數(shù),得到hash value,去pga的hash table里找匹配記錄。
較小的row source 被用來構(gòu)建hash table 與bitmap,第2個(gè)row source 被用來被hansed,并與第一個(gè)row source 生成的hash table 進(jìn)行匹配,以便進(jìn)行進(jìn)一步的連接。Bitmap 被用來作為一種比較快的查找方法,來檢查在hash table 中是否有匹配的行。特別的,當(dāng)hash table 比較大而不能全部容納在內(nèi)存中時(shí),這種查找方法更為有用。這種連接方法也有NL 連接中所謂的驅(qū)動(dòng)表的概念,被構(gòu)建為hash table 與bitmap 的表為驅(qū)動(dòng)表,當(dāng)被構(gòu)建的hash table 與bitmap 能被容納在內(nèi)存中時(shí),這種連接方式的效率極高。
位圖索引的理解
位圖索引:表有多少行則索引就有多少比特位,比如表的id字段建立位圖索引(只有5(第一行)、10(第二行)、15(剩下所有行)三個(gè)值),表有100行,則索引就有100比特位,則表第一行是5,則第一行對(duì)應(yīng)第一個(gè)索引值,索引塊中第一個(gè)索引值是5后面對(duì)應(yīng)的不是傳統(tǒng)的B樹索引性質(zhì)的rowid而是位圖標(biāo)識(shí)如1000000000000(99個(gè)0),表第二行是10,則第二行對(duì)應(yīng)第二個(gè)索引值,索引塊中第二個(gè)索引值是10后面對(duì)應(yīng)01000000000000(98個(gè)0),第三行之后的所有行對(duì)應(yīng)第三個(gè)索引值001111111(98個(gè)1)
索引塊如下
5 1000000000000
10 0100000000000
15 0011111111111
通過上面的1可以看出5只有1行是第一行,10只有1行是第二行,15對(duì)應(yīng)后面的98行,如果如下每隔四行就是5,則說明5總計(jì)有20個(gè)值,發(fā)現(xiàn)每列只有一個(gè)1,其實(shí)就是每行只有一個(gè)值得原因
5 1000010000100
10 0100000000000
15 0011101111011
以下為個(gè)人對(duì)hash位圖的一些理解
位圖就類似下面a[1][0]、a[1][1]、a[1][2]、..a[1][9]、..a[10][0]
1、2、3、4、..、100
1、2、3、4、..、1000
1、2、3、4、..、10000
如何快速找出28
a[10][10]
a[100][10]
a[1000][10]
mod(10,10)
a[1][0]=1
a[1][1]=11
..
a[1][9]=91
a[2][0]=2
a[2][1]=12
..
a[2][9]=92
...
a[8][?]
[8][2]->28
以上a[10][0]=10、a[10][1]=20(因?yàn)槭粸?,就是10.加上前面?zhèn)€位的10,就是20)..a[10][9]=100
1、11、21、31、...91
2、12、22、32、...92
3、13、23、33、...93
...
8、18、28、38、...98
..
10、20、30、40、...100
mod(100,10)
a[1][0]=1
a[1][1]=11
..
a[1][9]=91
a[2][0]=2
a[2][1]=12
..
a[2][9]=92
...
a[28][?]
[28][0]->28
mod(1000,10)
a[1][0]=1
a[1][1]=11
..
a[1][9]=91
a[2][0]=2
a[2][1]=12
..
a[2][9]=92
...
a[28][?]
[28][0]->28
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“hash join構(gòu)建位圖的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。