Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3336751
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2010-01-22 15:58:13

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 <= 10  
)WHERE RN > 1

3.总结
  
    第二种方法在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 20这句上。

    选择第11到20条记录存在两种方法,第二种方法正是在查询的第二层通过ROWNUM <= 20来控制最大值,在查询的最外层控制最小值。而第一种方法是去掉查询第二层的WHERE ROWNUM <= 20语句,在查询的最外层控制分页的最小值和最大值。

    数据库管理员在优化的时候,第二种情况下优化效果更好。
阅读(5646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~