RT呢,我这有一个表A,里面有2个字段m和n,里面分别存储的是表名和日期。我想写一个存储过程,把表A里面的数据扫描一遍执行语句‘delete from m where t_date = n’,目前我的做法是用游标逐条的读取数据执行语句。但是有个同事说我这样太慢了,BOSS要求我并发,就是A表中的多条数据同时并发执行,这样效率高,这听起来的确很不错,但是不知道怎么做呢……

解决方案 »

  1.   

    增加一个标志位列,写一个存储过程根据标志位来删除哪些表,通过一个或多个JOB来定时调用。
      

  2.   


    喔!?   没用过JOB,是神马东西咧,可否提供代码看看呢 :)
      

  3.   

    并行执行 PARALLEL,需要设置数据库相关的会话参数动态并行,不知道对效率是否有所提高,
    简单的参考http://www.oracle.com.cn/viewthread.php?tid=134609
      

  4.   

    不知道你的boss意思是否让你加上并行查询的关键字。用的时候注意下有没有其他用户在对数据库进行操作,因为用了这个关键字有可能会令其他用户因为拿不到cpu资源而出错。delete /*+ PARALLEL */ from m where t_date = n