递归分组问题求解(疑似相似客户分组)

[复制链接]
查看11 | 回复9 | 2010-7-3 17:16:26 | 显示全部楼层 |阅读模式
--客户主表create table cus_tab(id int primary key,name varchar2(30));
insert into cus_tab values(1,'A');
insert into cus_tab values(2,'B');
insert into cus_tab values(3,'C');
insert into cus_tab values(4,'D');
insert into cus_tab values(5,'E');
commit;复制代码--客户联系方式表create table phone_tab(id int references cus_tab,phone_num varchar2(40));
insert into phone_tab values(1,3);
insert into phone_tab values(2,4);
insert into phone_tab values(1,4);
insert into phone_tab values(3,6);
insert into phone_tab values(2,6);
insert into phone_tab values(4,1);
insert into phone_tab values(5,1);
commit;复制代码--最终结果
1 grp_1
2 grp_1
3 grp_1
4 grp_2
5 grp_2
1和2通过号码4关联起来,2和3通过号码6关联起来
4和5通过号码1关联起来
注:grp_1、2无强制要求,只是组别区分。

目前客户表有6000w左右数据,初步通过递归实现功能,但是性能奇差,还望那位大神
能够提供出高效的解决方法。

回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
现在绊在这个点上了,急救算法,先谢谢了。。。
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
顶一个
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
客户联系表加索引啊,就算递归速度肯定也会大弧度提高
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
加了的
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
按照号码listagg
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
〇〇 发表于 2014-3-19 19:02
按照号码listagg

不行的
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
顶一个,求newkid神关注
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
没有好办法。
根据著名的六度空间理论,很容易就可以把地球上所有人口都分为一组:
http://baike.baidu.com/view/357796.htm
回复

使用道具 举报

千问 | 2010-7-3 17:16:26 | 显示全部楼层
把你的方法拿出来看看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行