数据库分页查询SQL
2017-09-07 14:16
141 查看
总结一下关于oracle和mysql的分页查询语句
①ROWNUM查询分页通式:
②row_number()解析函数分页查询通式:
/*
* firstIndex:起始索引
* pageSize:每页显示的数量
* orderColumn:排序的字段名
* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句
*/
select * from(select * from(select t.*,row_number() over(order by orderColumn) as rownumber from(sql) t) p
where p.rownumber>firstIndex) where rownum<=pageSize
对于oracle的分页查询,特地选出这两种实现方式是因为这两者各有千秋《转》
首先, 我们知道在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<firstIndex+pageSize",根据oracle的原则,第二层查询语句会嵌入到最内层中进行查询,也就是说,最开始执行的查询语句类似于:select * from wyuse where rownum<(firstIndex+pageSize) order by id asc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,比如:select
* from wyuse where rownum<(5000) order by id asc,这样一开始会选出5000条记录,效率自然会慢很多....
不过,相对于ROWNUM,row_number()方式可能通过简化可以少一层嵌套,不过貌似对于大数量
4000
的查询,效率也高不到哪里去.....不过,对于大数量如果为表建立索引再结合row_number()效果会很好(未测试)
1:mysql分页查询
mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式:/* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex:起始的索引 * pageSize:每页显示的记录数 */ select o.* from (sql) o limit firstIndex,pageSize
2:oracle分页查询
oracle的分页查询方法相对来说要多点,主要介绍俩种查询方式:ROWNUM、row_number()①ROWNUM查询分页通式:
/* * firstIndex:起始索引 * pageSize:每页显示的数量 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句 */ select * from(select a.*,ROWNUM rn from(sql) a where ROWNUM<=(firstIndex+pageSize)) where rn>firstIndex
②row_number()解析函数分页查询通式:
/*
* firstIndex:起始索引
* pageSize:每页显示的数量
* orderColumn:排序的字段名
* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句
*/
select * from(select * from(select t.*,row_number() over(order by orderColumn) as rownumber from(sql) t) p
where p.rownumber>firstIndex) where rownum<=pageSize
对于oracle的分页查询,特地选出这两种实现方式是因为这两者各有千秋《转》
首先, 我们知道在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<firstIndex+pageSize",根据oracle的原则,第二层查询语句会嵌入到最内层中进行查询,也就是说,最开始执行的查询语句类似于:select * from wyuse where rownum<(firstIndex+pageSize) order by id asc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,比如:select
* from wyuse where rownum<(5000) order by id asc,这样一开始会选出5000条记录,效率自然会慢很多....
不过,相对于ROWNUM,row_number()方式可能通过简化可以少一层嵌套,不过貌似对于大数量
4000
的查询,效率也高不到哪里去.....不过,对于大数量如果为表建立索引再结合row_number()效果会很好(未测试)
相关文章推荐
- MS SQL Server数据库查询优化及分页算法
- 数据库分页查询SQL
- 各种数据库分页查询sql
- 各种数据库分页查询SQL
- 数据库系列之T-SQL(存储过程实现分页查询)
- MS SQL Server数据库查询优化及分页算法
- sql分页查询语句(三种主流数据库)
- sql分页查询语句(三种主流数据库)
- 几种常用数据库 分页查询的sql语句和简单分析
- 各种数据库分页查询sql语句大全
- 数据库分页查询语句(sql、access)
- 常见数据库的SQL分页查询汇集
- 在数据库表中分页查询数据的SQL
- mybatis的分页插件pagehelper-fix使用、数据库分页查询模板sql、总结mysql与oracle语句的区别
- 数据库分页查询(Sql封装及存储过程)
- 各种数据库分页查询sql语句
- sqlserver2000 数据库分页查询[根据网上搜索到得sql修改,亲测,可用]
- 常用数据库(MsSql,Oralce,MySql)用SQL实现分页查询
- sqlserver2000 数据库分页查询[根据网上搜索到得sql修改,亲测,可用]
- 走向面试之数据库基础:二、SQL进阶之case、子查询、分页、join与视图