精华帖 (0) :: 良好帖 (3) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-24
数据库分页大全(oracle利用解析函数row_number高效分页)
Mysql分页采用limt关键字 select * from t_order limit 5,10; #返回第6-15行数据 Mssql 2000分页采用top关键字(20005以上版本也支持关键字rownum) Select top 10 * from t_order where id not in (select id from t_order where id>5 ); //返回第6到15行数据 其中10表示取10记录 5表示从第5条记录开始取 Oracle分页 ①采用rownum关键字(三层嵌套) SELECT * FROM( ②采用row_number解析函数进行分页(效率更高) SELECT xx.* FROM( --返回第5-15行数据 解析函数能用格式 函数() over(pertion by 字段 order by 字段); Pertion 按照某个字段分区 Order 按照勒个字段排序 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-03
楼主 比较辛苦哦 我今天笔试的时候 就记错了 把mysql的分页写在Oracle上面了 简直是 日笨啊
|
|
返回顶楼 | |
发表时间:2009-09-06
分页方面,还是mysql方便,sqlserver呢,也比较麻烦,尤其是要进行排序时,也要很长的sql。oracle确实真的麻烦。记得上次,查询一次,写了三个嵌套的select,还用到集合的操作,麻烦。直接在程序中,用hibernate的那几个方法,就会存在效率问题。分页确实是个大问题。
|
|
返回顶楼 | |
发表时间:2009-09-06
SQL Server 2000的Top分页 id必须有唯一性约束
|
|
返回顶楼 | |
发表时间:2009-11-14
qepwqnp 写道
数据库分页大全(oracle利用解析函数row_number高效分页)
Mysql分页采用limt关键字 select * from t_order limit 5,10; #返回第6-15行数据 Mssql 2000分页采用top关键字(20005以上版本也支持关键字rownum) Select top 10 * from t_order where id not in (select id from t_order where id>5 ); //返回第6到15行数据 其中10表示取10记录 5表示从第5条记录开始取 Oracle分页 ①采用rownum关键字(三层嵌套) SELECT * FROM( ②采用row_number解析函数进行分页(效率更高) SELECT xx.* FROM( --返回第5-15行数据 解析函数能用格式 函数() over(pertion by 字段 order by 字段); Pertion 按照某个字段分区 Order 按照勒个字段排序 经过对单表2134043W数据进行测试发现row_number分布耗时15S,而采用ROWNUM仅0.0062S
|
|
返回顶楼 | |
发表时间:2009-11-14
用rownum两层就可以了呀?
select * from (select t.*,rownum r from mytable t where rownum<=10) where r>=5 |
|
返回顶楼 | |
发表时间:2009-11-19
事实证明:
select * from (select t.*,rownum r from mytable t where rownum<=15) where r>=5 效率最高 |
|
返回顶楼 | |
发表时间:2009-11-19
cnlinkin 写道 用rownum两层就可以了呀?
select * from (select t.*,rownum r from mytable t where rownum<=10) where r>=5 你确定两层没有问题? |
|
返回顶楼 | |
发表时间:2009-11-20
不错,mysql最方便
|
|
返回顶楼 | |
发表时间:2009-11-21
经测试发现:采用rownum方式进行分页,越后面越慢,不知道为什么,对于几千万的数据定位到最后的100条数据,受不了
|
|
返回顶楼 | |