select *
from (select row_. *, rownum rownum_
from () row_ where rownum<=1000020)
where rownum_>=1000000
7 个解决方案
#1
常用的分页方式就这几种,自己测试下哪个快一点吧
1.根据ROWID来分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from
t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
2.按分析函数来分
select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
3.按ROWNUM来分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where
rn>9980;
#2
row_number 分页,相对 top 100 ... where not in ( top 200) 来说,性能上各有所长,不过对于页数越大这种情况,前者比后者要好。
随便问一下LZ , 你的数据量大概是多少 ?
#3
错了,打开的窗口太多了,没看清是 ORACLE 的。
#4
SQL Server 的也是 用row_number over 的话 也是页面越大 速度越慢 有什么好的解决方法没??
1.根据ROWID来分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from
t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
2.按分析函数来分
select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
3.按ROWNUM来分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where
rn>9980;
#2
row_number 分页,相对 top 100 ... where not in ( top 200) 来说,性能上各有所长,不过对于页数越大这种情况,前者比后者要好。
随便问一下LZ , 你的数据量大概是多少 ?
#3
row_number 分页,相对 top 100 ... where not in ( top 200) 来说,性能上各有所长,不过对于页数越大这种情况,前者比后者要好。
随便问一下LZ , 你的数据量大概是多少 ?
错了,打开的窗口太多了,没看清是 ORACLE 的。
#4
SQL Server 的也是 用row_number over 的话 也是页面越大 速度越慢 有什么好的解决方法没??
#5
row_number 分页,相对 top 100 ... where not in ( top 200) 来说,性能上各有所长,不过对于页数越大这种情况,前者比后者要好。
随便问一下LZ , 你的数据量大概是多少 ?
2000万吧 最后一页直接就打不开
#6
row_number 分页,相对 top 100 ... where not in ( top 200) 来说,性能上各有所长,不过对于页数越大这种情况,前者比后者要好。
随便问一下LZ , 你的数据量大概是多少 ?