select * from ( 
    select temp_table.*,rownum rownum_ from ( 
         select * from (
          select * from a   
           union all
          select * from b
          
                       ) order by txtime
                                    ) temp_table where (rownum< 起始记录号+笔数)
              ) where rownum_>=起始记录号***************************************************
大家给看看这个分页语句还能不能优化一下,现在这个查询没法用,查询的特别慢,这2个表的数据大概有600W条,
大家还有什么ORACLE里分页的查询语句呢

解决方案 »

  1.   

    1,把>=换成>号试试看呢?
      

  2.   

    a表和b表没有条件,全部选择600万,并且要排序,肯定慢,
    如果有条件利用上高效率的索引,整个ab表符合条件的数据不是太多的话,
    速度应该可以接受的
      

  3.   

    按现在的条件,慢是肯定的。即使在txtime上有索引,走一遍600w记录加排序也快不了。这里要改进的是业务逻辑和表设计。既然要求分页,肯定是在线查询,没有什么在线查询需要检索如此数据量的全表,这样的要求不合理。