免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4218 | 回复: 8
打印 上一主题 下一主题

关于表join优化的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-17 18:19 |只看该作者 |倒序浏览
在DB2中建了两张表A,B
A 600多万条记录
B 400多万条记录


用 A.C1=B.C1 做join时

为何db2总是选择 nest loop join 呢?

甚至在我删除了 B.C1的索引后 join方式仍然没有变化。

然后我尝试增加 sortheap 和 sheapthres 后也没有变化。

我每次做动作都做了runstats。

现在我希望两个表能选择hash join,
如何才能把我的意图告诉优化器,还是可以有什么参数可以
设置强制使用 hash join。

DB2_HASH_JOIN 环境变量我设过了,并不起作用。

请各位大侠不吝赐教。

论坛徽章:
0
2 [报告]
发表于 2008-03-18 06:52 |只看该作者
why do you want to do that.....

论坛徽章:
0
3 [报告]
发表于 2008-03-18 10:07 |只看该作者
因为我是 DSS 的系统。
一般来讲DSS都是一些批量的数据处理。
hash join对dss系统来讲应该可以比较好的提高性能。

在上边那个例子中, nsloop join 效率非常低下。

论坛徽章:
0
4 [报告]
发表于 2008-03-19 04:26 |只看该作者
db2 optimizer is built based on cost estimation, i'm not sure how did you get conclusion that NSJOIN shouldn't be used there....
sometime hashjoin may not be the best option, it is really depends on the bp size, I/O rate, optlevel, db2set and data distribution....
so really wonder how did you know HSJOIN will have better performance than NLJOIN....

论坛徽章:
0
5 [报告]
发表于 2008-03-19 04:26 |只看该作者
did you capture db2exfmt output? maybe you can share it here...

论坛徽章:
0
6 [报告]
发表于 2008-03-19 16:08 |只看该作者
还有别的条件吗?首先要保证 A.C1=B.C1  两个字段类型长度一样。

论坛徽章:
0
7 [报告]
发表于 2008-03-20 22:08 |只看该作者
原帖由 lizhuo 于 2008-3-19 16:08 发表
还有别的条件吗?首先要保证 A.C1=B.C1  两个字段类型长度一样。


re,db2的优化器很聪明的,通常是sql写的不好

论坛徽章:
0
8 [报告]
发表于 2008-03-23 00:07 |只看该作者
谢谢各位的回答。

column 类型是一样的,也不存在sql 写得好不好的问题。
因为sql实在太简单了。
就是两个表的join。

重建这两张表时有时候会变成hsjoin,而且这时候明显速度
比nljoin快很多。


是不是我的runstat 命令用得不对?
版主哥哥去那里了?给点建议吧。

论坛徽章:
0
9 [报告]
发表于 2008-03-24 00:33 |只看该作者
did you capture distribution information in runstats?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP