为什么要存储过程,一条sql语句就可以:
insert into ridesbak (SEQUENCEID,MOTORISTID,CONSUMEDATE,LINEID,BUSID,ICID,BUYTYPE,MONEYS,TIMES,SURPLUSTIMES,BALANCE,BUILDDATE,DEVICEID,BURSEOID,TRADEID,DRIVEID)
      select SEQUENCEID,MOTORISTID,CONSUMEDATE,LINEID,BUSID,ICID,BUYTYPE,MONEYS,TIMES,SURPLUSTIMES,BALANCE,BUILDDATE,DEVICEID,BURSEOID,TRADEID,DRIVEID
from rides where rowid in (
  select rid from (select rowid rid from rides order by consumedate ) where rownum<=30);
BTW:千万级记录的表不分区?

解决方案 »

  1.   

    不好意思,内层order by的时候要改成order by consumedate desc才行
      

  2.   

    nowait(独行天涯路),现在正考虑建分区表,不过你用一条sql好像解决不了问题.
      

  3.   

    至少要考虑MOTORISTID分组啊,本意是转移出每张MOTORISTID的最近30条记录
      

  4.   

    就你过程中的sql而言能提高效率的方法有:
    使用绑定变量,在循环外提交。
      

  5.   

    怎么没有人回答?自己ding一下!