说一下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经典面试题
Sep 03 面试题
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
Jul 16 面试题
一道SQL存储过程面试题
Oct 07 面试题
介绍一下.net和Java的特点和区别
Sep 26 面试题
什么是命名空间(NameSpace)
Nov 24 面试题
开放系统互连参考模型
Jun 29 面试题
internal修饰符起什么作用
Dec 16 面试题
linux面试题参考答案(6)
Jun 23 面试题
一些Solaris面试题
Mar 22 面试题
Linux文件操作命令都有哪些
Feb 27 面试题
JAVA中运算符的分类及举例
Sep 12 面试题
天游软件面试
Nov 23 #面试题
介绍一下内联、左联、右联
Dec 31 #面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
You might like
十天学会php(1)
2006/10/09 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
javascript编程起步(第七课)
2007/02/27 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
Node.js编码规范
2014/07/14 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
如何在django中添加日志功能
2020/02/06 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
关于母亲节的感言
2014/02/04 职场文书
人力资源作业细则
2014/03/03 职场文书
工程造价专业求职信
2014/07/17 职场文书
倡议书格式
2014/08/30 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
单位考核鉴定意见
2015/06/05 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
ipad隐藏软件app图标方法
2022/04/19 数码科技