我有一张表是实时表,根据业务底层在实时添加数据,数据级别在百万左右.现在我开启一个线程,每隔2S会对这段时间实时表插入的每一条数据做分析,具体分析是当前数据与实时表之前的部分数据(根据业务来选择的,现在需求是在6万左右)做对比,若发现有相同数据,则插入到另一张表中.
我现在做的测试是,2S实时表中新增的数据量是2000条,再与实时表中6万条做对比,再插入到新表中需要很久,基本上在47秒以上吧.我的问题就是怎么样提高效率呢?我要的是思路,以及你思路的原因.谢谢oracle数据库执行效率

解决方案 »

  1.   

    这种需求很麻烦,首先比对数据的时候,在相关的列上都创建索引吧;其次插入的时候, /*+ append noloing*/的方式应该会快一点。 
      

  2.   

    之前用hibernate做的,做过一些优化,发现还是有问题的,最后还是用纯sql语句解决了.
      

  3.   

    最后2种方法:
    第一种把业务逻辑判断等等都通过sql语句来判断从而获取最后数据,再做插入操作.写sql涉及到了很多sql优化,    这方面我也是菜鸟,只能做一些细节的优化,比如有exists代替distinct,索引列不调用函数等;
    第二种在java代码中做优化,根据实际业务,把60000条数据分割,而不是一次查询60000条,每次的结果集放到LIST中,毕竟LIST可以存放Integer.MAX_VALUE个值,再通过对LIST操作,获取最后的数据;大家有好的办法,也可以一起讨论下啊