如何以下优化oracle分页语句?
select * from (select 
                           substr(km.sm_content, 0, 24) || '....' ct, 
                            km.sm_content,
                           case when km.total_count>10000 then round(40+(km.total_count-10000)*1.6/1000,0) else 0 end money,
                           substr(zu.usernickname, 0,6) shortname,
                           km.total_count, 
                           to_char(km.pass_time, 'YY-MM-DD') pt,
                           zu.usernickname,zu.username,
                           km.key_message_id, 
                           row_number() over(order by km.Total_Count desc) rn
                           from zk_product z
                           left join key_message_new km on z.prosourceid = km.key_message_id 
                           left join zk_users zu on zu.userid = z.userid 
                           where km.audit_tag >= 2 and km.user_visible = 1 and km.key_status = 1) where rn between 1 and 10

解决方案 »

  1.   

    select * from (select 
                              substr(km.sm_content, 0, 24) || '....' ct, 
                                km.sm_content, 
                              case when km.total_count>10000 then round(40+(km.total_count-10000)*1.6/1000,0) else 0 end money, 
                              substr(zu.usernickname, 0,6) shortname, 
                              km.total_count, 
                              to_char(km.pass_time, 'YY-MM-DD') pt, 
                              zu.usernickname,zu.username, 
                              km.key_message_id, 
                              row_number() over(order by km.Total_Count desc) rn 
                              from zk_product z 
                              left join key_message_new km on z.prosourceid = km.key_message_id 
                              left join zk_users zu on zu.userid = z.userid 
                              where km.audit_tag >= 2 and km.user_visible = 1 and km.key_status = 1 and rn<=10) where rn >=1
      

  2.   

    rown_number()没有意义
    直接order by配合rownum就可以了
    ... rownum as _row order by km.Total_Count desc) where _row between 1 and 10