Oracel 分页与排序

Oracel 分页方式,网上流传的两种方式:

1.select mTabB.* from (select rownum num, mTabA.* from ( 

  +sql+

   ) mTabA ) mTabB  
   where mTabB.num <= end  and mTabB.num >= start

2.select mTabB.* from (select rownum num, mTabA.* from ( 

  +sql+

   ) mTabA where rownum <= end ) mTabB  
   where mTabB.num >= start

简单的描述一下两种分页SQL 的区别:

1.第一种分页方式效率相对于第二种慢。

2.第二种分页原理为:首先oracel 会根据查询条件rownum 将的数据过滤掉,即先坎掉rownum 大于end的数据,然后在剩余的数据里面遍历mTabB.num >= start的数据,这也就是第二种分页效率高于第一种的原因。特别需要注意一点,如果本身的查询语句sql中包含 order by 可能会出现序号混乱的现象,原因是你order by的列值有重复,建议解决:order by + index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值