免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4040 | 回复: 0
打印 上一主题 下一主题

JAVA调用Oracle分页SQL用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-22 15:58 |只看该作者 |倒序浏览
1.第一种写法
select * from (
select rownum rm,a.* from (
   select xs.xh,xs.xbm,cf.xm,cf.qfr,cf.qfrq from cfxxb cf,xsjbxxb xs
       where cf.xh=xs.xh and cf.cflx='警告' and cf.xm like '%李%'
       order by qfrq desc
      
       )  a) where rm between 1 and 10
2.第二种写法
SELECT *   
FROM(   
SELECT ROWNUM RN,TA.*   
FROM(   
   select xs.xh,xs.xbm,cf.xm,cf.qfr,cf.qfrq
       from cfxxb cf,xsjbxxb xs where cf.xh=xs.xh and cf.cflx='警告' and cf.xm like '%李%'
       order by qfrq desc
)TA WHERE ROWNUM  1
3.总结
   
    第二种方法在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 20这句上。
    选择第11到20条记录存在两种方法,第二种方法正是在查询的第二层通过ROWNUM <= 20来控制最大值,在查询的最外层控制最小值。而第一种方法是去掉查询第二层的WHERE ROWNUM <= 20语句,在查询的最外层控制分页的最小值和最大值。
    数据库管理员在优化的时候,第二种情况下优化效果更好。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21752/showart_2157876.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP