数据库:的Oracle 11g如何处理大量的数据?使用
操作系统:的Red Hat Linux
技术应用于:的Java & ibatis的
说明:
- 有2个表格(tableA和tableB)。
- 表A有超过100000条记录(12-15列)。
- TableB有超过1000000条记录(40-45列)。
- 需要使用tableB中的column1检查tableA中的column1,column2,column3和column4值。
- 如果它在tableB中可用,那么我需要更新tableA中的其他列。
如何做到这一点?
问题:
目前我们已经做到了这一点用java/ibatis的。我们经常遇到java堆空间问题,因为它包含在每个30分钟的crontab中,它将处理数据并使环境变得更慢。
当前的方法:
从表A - 引用没有,用户的姓名,年龄和状态使用下面的查询 选择referenceno,姓名,年龄,状态从表A,其中状态=“失败”,其中牵强。 它几乎返回20lac行,同样存储在arraylist中。
从数组列表,每一行与referenceno,姓名,年龄在表如下从tableB的其中referenveno = tableA.referenceno和名称= tableA.name和年龄= tableA.age和 SELECT COUNT(*)进行比较deleteflag ='N'(如上面提到的tableB几乎有40lac记录)。
如果上面的查询然后返回1,它会随着时间的流逝更新状态表A,
如果回报率(< 1)失败,言论是没有匹配的发现将更新状态TABLEA。
如果返回(> 1),它将更新tableA,状态为FAILED,并将备注标记为'找到多个匹配项'。
希望使用shell脚本/ perl可以完成这项工作吗?请建议最好的方法来做到这一点!
你的描述的哪个部分是你坚持的? – 2014-09-19 11:56:35
更新的问题现在有更多的投入,希望你会得到现在的背景!!!!!!!! – Prabhakar 2014-10-10 10:30:05