日期:2014-05-17  浏览次数:20798 次

棘手的问题!!!!!!!!
表A有4千万以上记录

表结构是

id       代码       时间
2         100         2006-06-06
2         1001       2005-05-05
2         99           2006-01-01
3         100         2006-05-08
4         987         2003-02-06
4         9005       2005-06-08
5         505         2005-02-06
5         100         2006-06-06
5         45           2005-07-07
等等的很多数据。

表B是代码表,

主建   代码       有效时间开始               有效时间终止
1         1020         2006-07-08                   2006-08-09
2         101           2005-02-05                   2006-04-06
4         989           2006-12-01                   2007-01-01
5         130           2006-08-08                   2006-09-06
6         9227         2003-02-06                   2006-06-06
7         95           2005-06-08                   2006-06-06
8         55           2005-02-06                   2006-06-06
9         100         2006-06-06                   2006-08-06
10       455         2005-07-07                   2006-06-06
等等的很多数据

现在要做的就是拿表A中ID是一样的集合数据(一条或者多条)与表B进行匹配。
配的过程(1)代码匹配。(2)如果代码匹配,还要看时间是否在表B对应的时间段内。
这样的操作。表A中大概有4千W数据。表B大概是2W数据,怎么进行匹配啊?

------解决方案--------------------
楼一的好象不是吧那ID呢
------解决方案--------------------
纯属蹭分
------解决方案--------------------

select * from a,b
where a.id=b.id and a.dm=b.dm and a.sj> =b.kssj and a.sj <=b.jssj
应该不是这样的要求!?
------解决方案--------------------
这样的速度太慢了!
------解决方案--------------------
好像是要先提取重复ID的记录,然后在到表2中匹配,是这个意思吧?
------解决方案--------------------
算了。。我也顶顶
------解决方案--------------------
没明白楼主的意思
------解决方案--------------------
先顶吧
描述的不能明白
------解决方案--------------------
select a.* from a,b
where a.id=b.id and a.dm=b.dm and a.sj> =b.kssj and a.sj <=b.jssj
and a.id in (A表中重复的ID数据集)
------解决方案--------------------