免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8504 | 回复: 6

求助DB2数据库千万级数据量使用not in优化解决方案 [复制链接]

论坛徽章:
0
发表于 2007-12-19 22:01 |显示全部楼层
5可用积分
求助高手给一个能解决DB2数据库千万级数据量使用not in的优化方案,具体情况是这样:

数据库的数据量大概是千万级,要使用select * from table_A where AAA not in ('1110', '2221', '3334', '4454', '5578'...)

由于not in 的效率极低,导致此语句的执行时间巨长-__-|||

想请问哪位高手了解该如何优化这种查询方式?其中AAA并非索引。

希望能有高手帮助解决,小弟感激不尽!!!

最佳答案

查看完整内容

用join效率最高,我以前比较过http://www.cublog.cn/u/739/showart.php?id=215898

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2007-12-19 22:01 |显示全部楼层
用join效率最高,我以前比较过
http://www.cublog.cn/u/739/showart.php?id=215898

论坛徽章:
0
发表于 2007-12-20 11:23 |显示全部楼层
有没有办法啊?自己顶一个!

论坛徽章:
0
发表于 2007-12-20 12:34 |显示全部楼层
括号里东西多的话,做成表

论坛徽章:
0
发表于 2007-12-20 15:01 |显示全部楼层
原帖由 raullew 于 2007-12-20 12:34 发表
括号里东西多的话,做成表


做成表,然后呢,用not exists吗?

例如把'1110', '2221', '3334', '4454', '5578'...数据插入表table_B中,然后执行select * from table_A where AAA not exists (select AAA from table_B),请问这样效率会有很大提高吗?

[ 本帖最后由 raidenlee 于 2007-12-20 15:25 编辑 ]

论坛徽章:
0
发表于 2007-12-20 21:24 |显示全部楼层
用join啊
not in,not exist应该也会被引擎转化为join的,这个我不保证

论坛徽章:
0
发表于 2007-12-21 15:01 |显示全部楼层
转成not exist应该会比not in快点,此外,一定要用select *取所有column出来?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP