说一下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...

面试题 相关文章推荐
怎么处理XML的中文问题
Mar 26 面试题
C/C++程序员常见面试题二
Nov 19 面试题
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
Feb 09 面试题
广州地球村科技数据库题目
Apr 25 面试题
Oracle的内存结构(Memory structures)
Jun 10 面试题
亿阳信通股份有限公司C#笔试题
Dec 06 面试题
常用UNIX 命令(Linux的常用命令)
Dec 26 面试题
什么是虚拟内存?虚拟内存有什么优势?
Feb 19 面试题
山海经纬软件测试笔试题和面试题
Apr 02 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
Oct 17 面试题
What is EJB
Jul 22 面试题
String、StringBuffer、StringBuilder有区别
Sep 18 面试题
天游软件面试
Nov 23 #面试题
介绍一下内联、左联、右联
Dec 31 #面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
You might like
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
discuz的php防止sql注入函数
2011/01/17 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
Python中除法使用的注意事项
2014/08/21 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python保存数据到本地文件的方法
2018/06/23 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
小学教师岗位职责
2013/11/25 职场文书
英文自我鉴定
2013/12/10 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
医院党员公开承诺书
2014/08/30 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
人事任命通知书
2015/04/21 职场文书