总结Oracle,MySql,SQLServer的分页查询总结

page:当前第几页
Size:每页显示的记录数

MySql(limit关键字)

select id,name from test limit参数1,参数2;
参数1,从第几条开始
参数2,返回多少条数据

JavaWeb中实现分页算法

select * from tableName limit (page-1)*size,size

SQLServer(top关键字)

几乎任何字段,我们都可以通过max(字段)或min(字段)来提取某个字段中的最大 或最小值,所以如果这个字段不重复,那么就可以利用这些不重复的字段的max或min作为分水岭,使其成为分页算法中分开每页的参照物。
select top size  * from table1  where id>(select max (id) 
from (select top ((page-1)*size) id from table1 order by 
id) as T) order by id

Oracle(row_number()或者rownum)

ORCALE数据库实现分页查询可以使用 row_number()函数或者使用rownum 虚列两种方法。

//第一 种:利用分析函数row_number() 方法
select * from(
select t.*,row_number() over (order by t1.id) rowno from TABLE1
)
where rowno between 21 and 40;

//第二种:直接 使用rownum 虚列
select * from
(select t.*,rownum as rowno from TABLE1 )
where rowno between 10 and 20

这两种方法比较,显然第二种方法比较好。因为不用order by语句,会提高检索数据的速度的,尤其数据量越大时,第二种方法快速检索数据越明显。
最后提醒大家:oracle中慎用带有order by的分页。尤其是在oracle10g中,会出现会引起混乱,即相同记录会出现在不同页中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值