首先,我要修正一下,T1表的记录数确切说是300万条,不大,做索引没问题,
其次,我要解释一下我所做出的T2和T3,有点绕,但作用可以类比为从若干相似记录中只提取出一条记录作为样本,而剩余的记录我不存在T3中了,只是存放T2中一种映射关系,
在数学上也可以这样理解
若 A * B=C,那么当 Z * B =C时,我可以认为A=Z;在T1表中,发站与到站确定了PASS结点,那么当以确定的到站与PASS结点为条件查询,可以找到比如100条不同的发站,但利用前面我讲的数学思路,我可以认为这100条记录实际上就是一条记录,存放于T3中,而为了表述不同的发站或到站,我再建立映射关系存于T2中,这样,我就用T2与T3两表实现了T1表的所有作用。
第三,我要解释一下我为什么要这么做,原因是这样的,1,T2与T3表完全是为了使T1表记录数变少而人为构造的,除了为减少记录条数外,无其它任何作用;2,这种整理并不是经常性的,因而对整理的时间要求并不高,3,为什么非要进行压缩?目的很明确是想把全部数据T1从数据库中导入到内存中进行后续的处理,因此,不打想直接读入300万条记录,测算过,直接读入大约占内存400M,所以想尽量压缩一下T1 ,使得记录数能够到20-30万条,这样占用内存为30M,是可以接受的。
所以,才考虑采用以上思路进行压缩。
在进行T1到T2+T3的转换过程中,要求使用存储过程来实现,因此,我一直很困惑干该怎么样去写,整理转换的时间并不做很严格的要求,2-3个小时的计算都是可以接受的。希望高手们给些建议和思路,再次感谢大家!!!!!