如何以下优化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
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
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
直接order by配合rownum就可以了
... rownum as _row order by km.Total_Count desc) where _row between 1 and 10