说一下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面试题及答案-编程题
Oct 14 面试题
说一下mysql, oracle等常见数据库的分页实现方案
Sep 29 面试题
什么是.net的Remoting技术
Jul 08 面试题
Ref与out有什么不同
Nov 24 面试题
C#和SQL Server的面试题
Aug 12 面试题
如何开启linux的ssh服务
Feb 14 面试题
几个Linux面试题笔试题
Dec 01 面试题
Why do we need Unit test
Jan 03 面试题
AssertionError 跟一下那个类是 “is – a”的关系
Feb 21 面试题
创立科技Java面试题
Nov 29 面试题
如何理解transaction事务的概念
May 27 面试题
DELPHI面试题研发笔试试卷
Nov 08 面试题
天游软件面试
Nov 23 #面试题
介绍一下内联、左联、右联
Dec 31 #面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
You might like
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
2014道德模范事迹材料
2014/02/16 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
主管竞聘书范文
2014/03/31 职场文书
房产代理公证处委托书
2014/04/04 职场文书
中秋手机店促销方案
2014/06/16 职场文书
社区工作者个人总结
2015/02/28 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript