hash join構建點陣圖的理解
hash join的邏輯
-- 全表掃描小表,並把關聯欄位的值取出,在pga裡構建hash table。
-- 遍歷大表,根據掃描的結果按照關聯欄位執行相同的hash函式,得到hash value,去pga的hash table裡找匹配記錄。
較小的row source 被用來構建hash table 與bitmap,第2個row source 被用來被hansed,並與第一個row source 生成的hash table 進行匹配,以便進行進一步的連線。Bitmap 被用來作為一種比較快的查詢方法,來檢查在hash table 中是否有匹配的行。特別的,當hash table 比較大而不能全部容納在記憶體中時,這種查詢方法更為有用。這種連線方法也有NL 連線中所謂的驅動表的概念,被構建為hash table 與bitmap 的表為驅動表,當被構建的hash table 與bitmap 能被容納在記憶體中時,這種連線方式的效率極高。
點陣圖索引的理解
點陣圖索引:表有多少行則索引就有多少位元位,比如表的id欄位建立點陣圖索引(只有5(第一行)、10(第二行)、15(剩下所有行)三個值),表有100行,則索引就有100位元位,則表第一行是5,則第一行對應第一個索引值,索引塊中第一個索引值是5後面對應的不是傳統的B樹索引性質的rowid而是點陣圖標識如1000000000000(99個0),表第二行是10,則第二行對應第二個索引值,索引塊中第二個索引值是10後面對應01000000000000(98個0),第三行之後的所有行對應第三個索引值001111111(98個1)
索引塊如下
5 1000000000000
10 0100000000000
15 0011111111111
透過上面的1可以看出5只有1行是第一行,10只有1行是第二行,15對應後面的98行,如果如下每隔四行就是5,則說明5總計有20個值,發現每列只有一個1,其實就是每行只有一個值得原因
5 1000010000100
10 0100000000000
15 0011101111011
以下為個人對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(因為十位為1,就是10.加上前面個位的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
-- 全表掃描小表,並把關聯欄位的值取出,在pga裡構建hash table。
-- 遍歷大表,根據掃描的結果按照關聯欄位執行相同的hash函式,得到hash value,去pga的hash table裡找匹配記錄。
較小的row source 被用來構建hash table 與bitmap,第2個row source 被用來被hansed,並與第一個row source 生成的hash table 進行匹配,以便進行進一步的連線。Bitmap 被用來作為一種比較快的查詢方法,來檢查在hash table 中是否有匹配的行。特別的,當hash table 比較大而不能全部容納在記憶體中時,這種查詢方法更為有用。這種連線方法也有NL 連線中所謂的驅動表的概念,被構建為hash table 與bitmap 的表為驅動表,當被構建的hash table 與bitmap 能被容納在記憶體中時,這種連線方式的效率極高。
點陣圖索引的理解
點陣圖索引:表有多少行則索引就有多少位元位,比如表的id欄位建立點陣圖索引(只有5(第一行)、10(第二行)、15(剩下所有行)三個值),表有100行,則索引就有100位元位,則表第一行是5,則第一行對應第一個索引值,索引塊中第一個索引值是5後面對應的不是傳統的B樹索引性質的rowid而是點陣圖標識如1000000000000(99個0),表第二行是10,則第二行對應第二個索引值,索引塊中第二個索引值是10後面對應01000000000000(98個0),第三行之後的所有行對應第三個索引值001111111(98個1)
索引塊如下
5 1000000000000
10 0100000000000
15 0011111111111
透過上面的1可以看出5只有1行是第一行,10只有1行是第二行,15對應後面的98行,如果如下每隔四行就是5,則說明5總計有20個值,發現每列只有一個1,其實就是每行只有一個值得原因
5 1000010000100
10 0100000000000
15 0011101111011
以下為個人對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(因為十位為1,就是10.加上前面個位的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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2154697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql join 的本質,Nested Loop Join 和 Hash JoinMySqlOOP
- flinkSql join redis的hash結構維表簡單實現SQLRedis
- 從Hash Join的執行計劃的細節中能看到點啥
- Hash join演算法原理(轉)演算法
- 多表連線的三種方式詳解 hash join、merge join、 nested loopOOP
- [20180705]關於hash join 2.txt
- 點陣圖
- Oracle assm三級點陣圖結構解析OracleSSM
- join 分割陣列陣列
- 資料庫實現原理#4(Hash Join)資料庫
- 以己度人,構建理解鏈
- 看圖理解基於陣列的佇列陣列佇列
- [20200306]hash join會提前終止掃描嗎.txt
- 點陣圖索引的工作原理 - Richard索引
- 構建最簡單陣列陣列
- ClickHouse 留存、路徑、漏斗、session 點陣圖 roaringbitmap 點陣圖最佳化Session
- 點陣圖索引(轉載)索引
- PHP 文字生成點陣圖PHP
- Redis 應用-點陣圖Redis
- 點陣圖字型匯入
- 可寫點陣圖(WriteableBitmap)
- VC 點陣圖按鈕CBitmapButton的使用
- 效能優化小冊 - 分類構建:利用好 webpack hash優化Web
- [關係圖譜] 二.Gephi匯入共線矩陣構建作者關係圖譜矩陣
- 1441 用棧操作構建陣列陣列
- PHP掃描圖片轉點陣 二維碼轉點陣PHP
- 看圖輕鬆理解資料結構與演算法系列(陣列)資料結構演算法陣列
- [20180713]關於hash join 測試中一個疑問.txt
- Python點陣圖索引學習Python索引
- Android Bitmap(點陣圖)詳解Android
- 演算法-點陣圖排序演算法排序
- 點陣圖與ERP場景
- [譯]理解AST構建Babel外掛ASTBabel
- 深入理解Thread建構函式thread函式
- Docker映象構建原理解析(不裝docker也能構建映象)Docker
- Redis 基礎 -- 點陣圖(bitmap)資料結構和 bitmap的常用命令Redis資料結構
- 代理模式+react+ 圖片佔點陣圖模式React
- join、inner join、left join、right join、outer join的區別