select TYDWNO
        into E_TYDWNO
        from (select TYDWNOROWNUM NO
                from (select DISTINCT TYDWNO FROM TEMP_BFHPOSLC)
               where rownum < (a + 1))
       WHERE NO >= a;
a是变量从1到最后一条
几十万条数据慢死我老命啊     

解决方案 »

  1.   

    最好说一下你的数据,然后说要的功能,不要把你的SQL放上来!
      

  2.   

    俺这条语句的功能就是个循环得到表的TYDWNO ,每次得到一个,第一个,第二个,第三个
     1 TYDWNO有重复的咯,所以要先distinct啊
     2 a从0开始递增 到count(distinct TYDWNO)。比如说要取得第五行的数据 那就是嵌套嘛 内层rownum<6 外层rownum>4
     3 玩了
      

  3.   

    还有 WHERE A="XXX"
       AND B="YYY"
       AND C="ZZZ"
    这个排列顺序有什么讲究啊
      

  4.   


    使用select DISTINCT TYDWNO FROM TEMP_BFHPOSLC这条SQL建立一个游标,然后用游标去处理即可。如果你的编程环境支持结果集处理可以使用上面的语句直接得到一个结果集,然后对这个结果集进行循环处理。推荐用结果集的方案,如果编程环境不支持就采用游标吧。
      

  5.   

    游标效率低是相对而言的,再低也比你这种每条记录都执行一次SQL语句要快呀。
      

  6.   

    最优方案就是一次把所有的记录都取到客户端,然后在客户端进行循环处理所有的记录,SQL只执行一次。
      

  7.   

    http://topic.csdn.net/u/20110930/14/f0c4c461-775d-4ed9-a5de-3a4774e47683.html去这里就不用游标了
      

  8.   

    select into 
    pl/sql的写法,那么何必这么做
    而且这个select 语句这么写肯定会导致没有必要的性能问题