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

面试题 相关文章推荐
PHP开发的一般流程
Aug 13 面试题
简单介绍Object类的功能、常用方法
Oct 02 面试题
c++工程师面试问题
Aug 04 面试题
.NET面试题:什么是反射
Sep 30 面试题
STP的判定过程
Oct 01 面试题
局域网定义和特性
Jan 23 面试题
Linux如何压缩可执行文件
Mar 27 面试题
敏捷开发的主要原则都有哪些
Apr 26 面试题
值传递还是引用传递
Feb 08 面试题
代码中finally中的代码会不会执行
Feb 06 面试题
九州传奇上机题
Jul 10 面试题
一套Delphi的笔试题二
May 11 面试题
天游软件面试
Nov 23 #面试题
介绍一下内联、左联、右联
Dec 31 #面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
vue实现计步器功能
2019/11/01 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
使用Python写个小监控
2016/01/27 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
通过代码实例了解Python异常本质
2020/09/16 Python
Python项目打包成二进制的方法
2020/12/30 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
厂长助理岗位职责
2013/12/27 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
离婚代理词范文
2015/05/23 职场文书
追悼词范文大全
2015/06/23 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书