hash join构建位图的示例分析

网友投稿 359 2024-01-03

hash join构建位图的示例分析

这篇文章主要介绍了hash join构建位图的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

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

感谢你能够认真阅读完这篇文章,希望小编分享的“hash join构建位图的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Oracle如何实现手工建库
下一篇:PostgreSQL中exec_simple_query函数的实现逻辑是什么
相关文章

 发表评论

暂时没有评论,来抢沙发吧~