说一下mysql, oracle等常见数据库的分页实现方案


Posted in 面试题 onSeptember 29, 2012
1.Oracle:
select * from ( select row_.*, rownum rownum_ from ( query_SQL ) row_ where rownum == min
2.SQL Server:
select top @pagesize * from tablename where id not in (select top @pagesize*(@page-1) id from tablename order by id) order by id

3.MySQL
select * from tablename limit position, counter

4.DB2
select * from (select *,rownumber() as ROW_NEXT from tablename) where ROW_NEXT between min and max

——————————————————————————————–
1.分页方案一:(利用Not In和SELECT TOP分页)效率次之
语句形式:
SELECT TOP 10 * FROM TestTable
WHERE(ID NOT IN (SELECT TOP 20 id FROM TestTable ORDERBY id)) ORDERBYID
SELECT TOP 页大小 * FROM TestTable
WHERE( ID NOT IN (SELECT TOP 每页大小-1*待查询页数-1 id FROM 表 ORDERBY id)) ORDERBYID
思路:先查询出待查询页之前的全部条数的id,查询ID不在这些ID中的指定数量条数

2.分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高
语句形式:
SELECT TOP 10 * FROM TestTable
WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP20 id FROM TestTable ORDERBYid)AS T))ORDERBY ID
SELECT TOP 页大小* FROM TestTable
WHERE(ID>(SELECT MAX(id) FROM(SELECT TOP 每页大小*待查询页数-1 id FROM 表 ORDERBY id)AS T)) ORDERBY ID
思路:先获得待查询页的之前全部条数id,获得它们当中最大的ID号,以此最大ID号为标志,查找比这个ID号大的指定条数

3.分页方案三:
SELECT TOP PageSize * FROM(SELECT TOP nPage*PageSize * from YOURTABLE order by id)as a order by id desc
SELECT TOP 每页条数 * FROM (SELECT TOP 待查询页*每页条数) * from YOURTABLE order by id)as a order by id desc
思路:先正排序查询出待查询页之前(包括当前页)的全部条数,然后将其倒排序,取指定条数

Tags in this post...

面试题 相关文章推荐
What is the purpose of Void class? Void类的作用是什么?
Oct 31 面试题
估算杭州有多少软件工程师
Aug 11 面试题
.net开发工程师面试题
Feb 25 面试题
.NET remoting中对象激活的两种方式
Jun 08 面试题
网络通讯中,端口有什么含义,端口的取值范围
Nov 23 面试题
PPP协议组成及简述协议协商的基本过程
May 28 面试题
一些Solaris面试题
Dec 22 面试题
Linux面试经常问的文件系统操作命令
Nov 05 面试题
如何用JQuery进行表单验证
May 29 面试题
如何开发一个JQuery插件
Jul 28 面试题
日期和时间问题
Jan 04 面试题
Java程序员面试90题
Oct 19 面试题
天游软件面试
Nov 23 #面试题
介绍一下内联、左联、右联
Dec 31 #面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
You might like
PHP DataGrid 实现代码
2009/08/12 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Linux下python3.7.0安装教程
2018/07/30 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
Django logging配置及使用详解
2019/07/23 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
售后主管岗位职责
2013/12/08 职场文书
采购部部长岗位职责
2014/02/06 职场文书
《藏戏》教学反思
2014/02/11 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
防火标语大全
2014/10/06 职场文书
高中生旷课检讨书
2014/10/08 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
2014年物流工作总结
2014/11/25 职场文书
公证处委托书
2015/01/28 职场文书
英语通知范文
2015/04/22 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
Python实现Hash算法
2022/03/18 Python
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android