互联网服务数据库

如何做上千万条数据的筛选?

目前有三张表,假设为A,B,C,其实A表数据4000多万条,B,C表数据分别700多万条,三表的主键均为产品号,同时C表数据是A表数据的子集。现在想找到在,在A表中的数据,但是不在B,C,表中的数据,只需要找到 产品号 字段。我初步的解决办法是 先将B,C表UNION至一个新表D中,UNION语句如下,selec...显示全部
目前有三张表,假设为A,B,C,其实A表数据4000多万条,B,C表数据分别700多万条,三表的主键均为产品号,同时C表数据是A表数据的子集。
现在想找到在,在A表中的数据,但是不在B,C,表中的数据,只需要找到 产品号 字段。
我初步的解决办法是 先将B,C表UNION至一个新表D中,UNION语句如下,select b.产品号 from B b union select c.产品号 from C c,如何导入到D表,还没有更好的方法,export,import的方法我们没有权限,需要找相关部门商量,而select into好像DB2不只是数据对导。大家有什么更好的方法吗?

如果以上可以实现,在A表中的数据,但是不在B,C,表中的数据 将改为在A表中的数据,但是不在D表中的数据,SQL如下:
select a.产品号 from A a where a.产品号 not in (select d.产品号 from D d)
但是对于千万条级别的数据,这个速度也会超级的慢。

想看看大家有什么建议吗?发愁ing ........

在其他论坛看到这个问题,觉得有些意思,转过来和大家一起讨论!收起
参与20

查看其它 19 个回答星星峡的风的回答

星星峡的风星星峡的风技术支持工程师福建新大陆软件有限公司
不知道楼主机器如何,我们这里机器性能强大,在建立好索引,做完表分析后,细节上的优化注意的就不多了..
方法我推荐except ,select productID  from A
except
(select b.productID  from b
inner join C
on b.productID =c.productID
)
可能没完全理解楼主意思,left和inner自己选吧.
电信运营商 · 2010-07-13
浏览365

回答者

星星峡的风
技术支持工程师福建新大陆软件有限公司
擅长领域: 数据库系统运维服务器

星星峡的风 最近回答过的问题

回答状态

  • 发布时间:2010-07-13
  • 关注会员:0 人
  • 回答浏览:365
  • X社区推广