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

面试题 相关文章推荐
文件中有一组整数,要求排序后输出到另一个文件中
Jan 04 面试题
OLEDBConnection和SQLConnection有什么区别
May 31 面试题
什么是命名空间(NameSpace)
Nov 24 面试题
上海天奕面试题笔试题
Apr 19 面试题
.NET程序员的几道面试题
Jun 01 面试题
.NET概念性的面试题
Feb 29 面试题
简述安装Slackware Linux系统的过程
Jan 12 面试题
一些Unix笔试题和面试题
Jan 22 面试题
什么是makefile? 如何编写makefile?
Jan 02 面试题
什么是虚拟内存?虚拟内存有什么优势?
Feb 09 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Jul 27 面试题
UNIX操作系统结构由哪几部分组成
Feb 17 面试题
天游软件面试
Nov 23 #面试题
介绍一下内联、左联、右联
Dec 31 #面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
You might like
function.inc.php超越php
2006/12/09 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php构造函数实例讲解
2013/11/13 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
Smarty保留变量用法分析
2016/05/23 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
Python批量发送post请求的实现代码
2018/05/05 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
艺术应用与设计个人的自我评价
2013/11/23 职场文书
成本会计实训报告
2014/11/05 职场文书
还款承诺书范本
2015/01/20 职场文书
长城的导游词
2015/01/30 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
公司地址变更通知
2015/04/25 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书