你这语句写的嵌套写的有何用。
试试select a1.* 
       from ( select id,title,sort,updt 
              from news 
              where sort = 1111 
              order by updt desc) a1 where rownum <10

解决方案 »

  1.   

    sort updt 都创建了索引,id,title建索引了么
      

  2.   

    主要用于 第2页等,select a2* 
    from (select rownum rsn,a1.* 
           from ( select id,title,sort,updt 
                  from news 
                  where sort = 1111 
                  order by updt desc) a1
         ) a2
    where a2.rsn > 10 and a2.rsn < 20
      

  3.   


    第二页也不该这样写,效率很慢
    你那种方法是把> 和<都放最外面。你试试这个
    select a1.*
           from ( select id,title,sort,updt ,rownum rn
                  from news 
                  where sort = 1111
                  and rownum<20
                  order by updt desc) a1 where rn>=10
      

  4.   

    楼主现在里面筛选一层。这个sql通用(嵌套)!select a2.*
      from (select rownum rsn, a1.*
              from (select  id,title,sort,updt 
                      from base_student
                      where sort = 1111
                     order by updt desc) a1
             where rownum <= 20) a2
     where a2.rsn > 10
      

  5.   

    采用了这个方法,还是很慢,是否是时间字段 创建索引的问题
    我创建索引的语句 是 
    create index i_base_student_updat on base_student(updt)
    没有加其他参数
      

  6.   

    索引加载sort上就行啊,这个才是条件
      

  7.   

    索引加载 sort 上,然后SELECT a2.* 
    FROM (
          SELECT id,title,sort,updt, to_number() orver (ORDER BY updt DESC) rsn
          FROM news
          WHERE sort = 1111 
         ) a2
    WHERE a2.rsn > 10 AND a2.rsn < 20
      

  8.   

    sort 和 updt都有创建索引,用以下语句还是很慢
    SELECT a2.* 
    FROM (
          SELECT id,title,sort,updt, ROW_NUMBER() over (ORDER BY updt DESC) rsn
          FROM news
          WHERE sort = 1111 
         ) a2
    WHERE a2.rsn > 10 AND a2.rsn < 20
      

  9.   

    找到问题的原因了,我在第一级 那里 用了to_char,导致索引没起作用引起的,谢谢大家。