`
362217990
  • 浏览: 50730 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

最新+最简单Oracle分页查询法

阅读更多
这两天在学习Oracle数据,下载了韩顺平的玩转ORACLE视频,感觉讲的还不错,
可能是我以前用个mysql和SQLServer的原因,听起来很容易懂。
别扯远了,回到正题吧。呵呵
  我看到Oracle分页的时候,韩老师也说这是最简单最常用的一种。
   
      select * from (select a1.*,rownum rn from(select * from emp) a1 where rownum<=10) where rn>=6;
    

   我感觉非常麻烦,还要3个子查询。
     其实大家也知道子查询的效率是非常慢的, 能不用子查询就尽量不要用。

     我研究了下,结果感觉比上面那个要简单很多,只需要2个子查询
 
	select * from (select e.*,rownum rn from emp e) a1 where a1.rn between 6 and 10;
  


   两种查找的效果都是一样的。

   但是我感觉这样确实不错,简单方便,可读性也更高,新手更容易看懂,
   查询效率按道理来说应该是上面那个更快。
    如果大家有什么意见和建议都可以跟我交流下。
分享到:
评论
14 楼 mayufenga1 2010-01-25  
还是第一种是对的,第2种有性能问题,真的,如何在加上order by,你就知道啦
13 楼 xinshou 2009-12-10  
对oracle不是很熟,这种查找是不是主键是连续的?
12 楼 redish 2009-12-07  
/**
	 * Oracle 分页sql语句生成方法
	 * @param sql sql语句
	 * @param pageIndex 页下标
	 * @param pageSize 页面大小
	 * @return
	 */
   public  static String createOraclePagingSql(String sql, int pageIndex, int pageSize){
	   int m = (pageIndex-1) * pageSize; 
       int n = m + pageSize; 
	   StringBuffer pagingSelect = new StringBuffer(100); 
	   pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ")
	   .append(sql) 
	   .append(" ) row_ where rownum <=")
	   .append(n)
	   .append(") where rownum_ >")
	   .append(n); 	   
	   return pagingSelect.toString(); 	
   }

11 楼 redish 2009-12-07  
误导别人,很明显第一种的好。
10 楼 zwq4166506 2009-11-02  
chensunhao 写道
一般都是第二种,效率要高些

别误导新人,在百万级数据查询,第二种会等死人,比第一种慢差不多10倍
9 楼 myworkfirst 2009-10-28  
coolbaby1984514 写道
第一种比第二种效率高
在数据量少的情况下  差别不是很大
一旦数据量大的话  第二种分页很废时间
同样100W条数据 第一个方法施行时间是0.125秒
第2个是 3.015秒
另外 告诉lz 下 between and 少用  效率慢 不如用> <

  非常正确
8 楼 l250707449 2009-10-28  
<p>select * from (select e.*,rownum rn from (<strong><span style="color: #ff0000;">select * from emp</span></strong>) e) a1 where a1.rn &gt; 6 and a1.rn  &lt; 10;   </p>
<p> </p>
<p>觉得这样写比较好 </p>
<p> </p>
<p>这样<span style="color: #000000;"><strong>select * from emp 就可以独立出来 不依赖于sql 语句  不用每个都带</strong>rownum</span><span style="color: #000000;">  </span></p>
<p> </p>
<p>也好维护</p>
<p> </p>
7 楼 leejon 2009-10-27  
貌似我之前在oracle中,写个分页排序的sql查询了三个集合然后再用集合的操作才搞定。
看来我还没到火候,呵呵。
6 楼 gstripe 2009-10-27  
用第一种啦
你试着去Hibernate那弄出他提交到的oracle时产生的分页语句
就知道了
5 楼 akunamotata 2009-10-26  
韩顺平的我也看过,讲的太白话啦,不过说的很不错!

还有内联,外联少用...效率低...
4 楼 coolbaby1984514 2009-10-26  
第一种比第二种效率高
在数据量少的情况下  差别不是很大
一旦数据量大的话  第二种分页很废时间
同样100W条数据 第一个方法施行时间是0.125秒
第2个是 3.015秒
另外 告诉lz 下 between and 少用  效率慢 不如用> <
3 楼 chensunhao 2009-10-16  
一般都是第二种,效率要高些
2 楼 362217990 2009-10-16  
myy 写道
http://www.iteye.com/topic/9681?page=1

什么意思 ??
1 楼 myy 2009-10-15  
http://www.iteye.com/topic/9681?page=1

相关推荐

    mysql oracle和sqlserver分页查询实例解析

    mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: selecto.*from(sql)o limit firstIndex,pageSize 如下面的截图,每页显示的记录数为20: 查询(1-20)这20条记录 查询(21-40)这20条...

    6、oracle数据库下查询操作

    对数据查询最简单的也就是单表查询了,查询使用的语法是: SELECT [COLS] FROM [TABLE] [WHERE][CONDITION] 平常查询时,一定会有条件,也就是使用到where关键字,之后接条件,这里的条件可以看之前的一篇...

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    发现用一个type进行排序后,做分页查询,第一页的数据和第二页的数据有重复 怀疑是order by 时,两次排列的顺序不一致 看到业务描述的问题可以得到的结论order by排序不稳定,还有第一个印象就是,type肯定是不唯一...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例231 文本文件的分页读取 298 4.4 文件操作 300 实例232 文件操作汇总 300 实例233 目录、文件定位器 302 实例234 改头换面 303 实例235 文件属性分析 304 实例236 文件类型检测 306 实例237 判断文件的权限 308 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例231 文本文件的分页读取 298 4.4 文件操作 300 实例232 文件操作汇总 300 实例233 目录、文件定位器 302 实例234 改头换面 303 实例235 文件属性分析 304 实例236 文件类型检测 306 实例237 判断文件的权限 308 ...

    C#.net_经典编程例子400个

    39 1.11 设置窗体位置 40 实例038 设置窗体在屏幕中的位置 40 实例039 始终在最上面的窗体 41 1.12 设置窗体大小 42 实例040 限制窗体大小 42 实例041 获取桌面大小 42 实例042 ...

    C#程序开发范例宝典(第2版).part13

    实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...

    C#程序开发范例宝典(第2版).part08

    实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...

    C#程序开发范例宝典(第2版).part02

    实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...

    C#程序开发范例宝典(第2版).part12

    实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...

Global site tag (gtag.js) - Google Analytics