各种数据库分页查询方法
作者:网络转载 发布时间:[ 2015/2/11 11:37:49 ] 推荐标签:数据库 SQL 查询
具体实现中,根据所用数据库、数据量、实现分页方式,选择分页实现快的方式实现。
一、MYSQL分页查询方法
MYSQL分页查询主要使用其自带的limit函数,但需根据查询量来决定具体的使用方式,如只有几千或几万数据,则直接用 limit m,n方式,
如数据量较多,则要注意limit的使用方式。
// limit m , n:从第 m 条数据开始,获取 n 条数据
1、数据量少的方式:select * from tablename limit m,n;
// limit m , n:m 可省略,省略或默认从结果集的第 0 条 开始
2、数据量多的方式:
// 从490000开始取10条
a. select * from tablename where id>=(select id from tablename limit 490000,1) limit 10 ;
b. select * from tablename limit 490000,10 ;
a 方式要比 b方式快
二、DB2分页查询方法
DB2分页查询方法主要以 rownumber() over() 函数方式实现,如下:
select * from(select 字段1,字段2...rownumber() over(order by id desc) as rn from tablename where...) as t1
where t1.rn between m and n / t1.rn >m and t1.rn <= n;
三、ORACLE分页查询方法
ORACLE分页查询主要以rownum关键字和rownumber() over()函数实现,如下:
1、rownum关键字--无排序--获取 n 到 m条数据
a. 在查询的第二层通过ROWNUM <= m 来控制大值,在查询的外层控制小值:
select * from (
select a.*, rownum rn from (
select * from tablename) a
where rownum <= m)
where rn >= n
b. 直接在外层控制大值小值
select * from (
select a.*, rownum rn from (
select * from tablename) a)
where rn between n and m
//在绝大多数情况下,a方式要比b方式快的多
2、rownum关键字--需排序--获取 n 到 m条数据
// 错误方式
select * from
(select t.*,rownum rn from mytable t order by t.id) b
where b.row_num between n and m
//错误原因:上面sql会先执行 rownum rn产生行号,再 执行order by 排序,但是后结果通过rn即行号获取,order by排序不起作用
// 正确做法:先排序,对排序后的结果生成行号,则根据rn获取结果获取到的是排序后的结果
//正确方式:再加一层先排序
select * from
(select a.*, rownum rn from (select * from tablename order by id)a)b
where b.rn between n and m
3、rownum() over()方式--同db2方式
select * from(select 字段1,字段2...rownumber() over(order by id desc) as rn from tablename where...) as t1
where t1.rn between m and n / t1.rn >m and t1.rn <= n;
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11