db2 decfloat mysql_DB2 LUW 三种表的连接方式

散列连接

散列连接需要一个或多个格式为 table1.columnX = table2.columnY 的谓词,在此格式中,列类型相同。对于类型为 CHAR 的列,长度必须相同。对于类型为 DECIMAL 的列,精度和小数位必须相同。对于类型为 DECFLOAT 的列,精度必须相同。该列不能是 LONG 字段列或 LOB 列。

首先,扫描指定的内表并且将行复制到从排序堆中划出的内存缓冲区,该排序堆由 sortheap 数据库配置参数指定。根据使用连接谓词的列计算而得的散列值,将内存缓冲区分为若干部分。如果内表的大小超出可用的排序堆空间,那么将所选部分的缓冲区写入临时表。

处理内表完毕后,通过首先比较对连接谓词的列计算的散列值,扫描第二个表(外表)并将该表的行与内表的行匹配。如果外表行列的散列值与内表行列的散列值匹配,那么将比较实际的连接谓词列值。

与未被写入临时表的表部分相对应的外表行将立即与内存中的内表行匹配。如果内表的对应部分已被写入临时表,那么也将外表行写入临时表。最后,从临时表中读取匹配的表部分对,比较它们的行的散列值,然后检查连接谓词。

为了全面实现散列连接的性能增益,可能需要更改 sortheap 数据库配置参数和 sheapthres 数据库管理器配置参数的值。

如果能够避免散列循环以及溢出到磁盘,那么散列连接的性能最佳。要调整散列连接性能,请估算可供 sheapthres 使用的最大内存量,然后调整sortheap 参数。增大它的设置,尽可能避免散列循环和磁盘溢出,但不要达到 sheapthres 参数指定的限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值