请问各位大德
假设有两百个档案(或更多)
每个档案笔数是40000(四万)笔
数据库资料大约是几千万笔
目标是要将每个档案去碰数据库内存有的资料,然后做比对
环境只能用 UNIX的/bin/sh 和数据库
那该怎么做会比较佳呢?
档案内容比如说:
number|starttime|endtime|sum
1111|04/01/2015|04/30/2015|10
1111|04/01/2015|04/30/2015|30
2222|04/01/2015|04/30/2015|20
2222|04/01/2015|04/30/2015|40
5555|04/01/2015|04/30/2015|10
9999|04/01/2015|04/30/2015|7
要将档案的number去和数据库内的某个table碰number后,得到number2(primary key)
再去其他table用number2做搜寻且加总用量(sum),然后比对!
目前的做法:
写循环一个一个档案load进数据库temp table内
用sql去执行比对再unload下来,但是效能不佳(每个档案都要跑大概15~20分钟)
temp table加上index似乎也不会变快
改良的想法:
目前我想到的改良作法是一次将数据库所需资料unload下来
再用程式(可能开五支或更多背景程式)去执行grep之类的
这样也不会耗太多DB资源
这样会不会有点多余或是这是糟糕的想法呢?
是否请大德们可以给点建议或是提示呢?
谢谢 ^^