hash join构建位图实例分析

分类:编程技术 时间:2024-02-20 15:56 浏览:0 评论:0
0
本文主要介绍了hash join构建位图的实例分析,具有一定的参考价值。有兴趣的朋友可以参考一下。希望您读完这篇文章后能有所收获。让小编带你来了解一下吧。 。

hash join的逻辑
--全表扫描小表,取出关联字段的值,在pga中构建哈希表。
-- 遍历大表,根据扫描结果根据关联字段执行相同的哈希函数,得到哈希值,在pga的哈希表中找到匹配的记录。

较小的行源用于构建哈希表和位图。第二行源用于与第一行源生成的哈希表进行汉化和匹配以进行进一步处理。联系。位图用作更快的搜索方法来检查哈希表中是否有匹配的行。特别是,当哈希选项卡时,这种搜索方法更有用le 太大,无法装入内存。这种连接方式也有NL连接中所谓驱动表的概念。构造为哈希表和位图的表是驱动程序表。当构建的哈希表和位图能够容纳在内存中时,这种连接方法的效率是极高的。



位图索引的理解
位图索引:表中有多少行,索引就有多少位。例如,表的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可以看出只有1行5是第一个行,10 中只有 1 行是第二行,15 对应接下来的 98 行。如果如下每第四行是 5,则表示 5 总共有 20 个值。发现每一列只有一个1,实际上意味着每一行只有一个。值得的理由
5 1000010000100
10 0100000000000
15 0011101111011




以下是个人对哈希位图的一些理解
位图类似于下面的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

感谢您仔细阅读本文。希望e大佬分享的文章《Hash Join构造位图示例分析》ditor会对大家有所帮助。也希望大家支持和关注行业资讯频道。 ,更多相关知识等待您学习!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > hash join构建位图实例分析

用户评论