问明月五线谱:Oracle中怎样取指定范围内的记录?

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 20:31:17
如果从表面上看100000条记录中取90000-90050的记录用
SELECT   *   from   table   where   rownum   > 90000   minus   SELECT   *   from   table   where   rownum   >   90050的方法很慢,大概20多秒,而SQLServer用10秒就够了。有其他解决办法吗?BOW
  • KingSunSha
  • (弱水三千)
  • 等 级:
  • 10

    更多勋章
#1楼 得分:0回复于:2001-11-02 22:30:56如果你的ORACLE版本是8i以上,那可以用
SELECT   *  
    from   table  
  where   rownum   BETWEEN   90000   AND   90050
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:一篇MYSQL表优化的文章,说的很好。推荐一下
  • homey123
  • (icemat)
  • 等 级:
#2楼 得分:0回复于:2001-11-03 19:08:56我试了一下,用select   *   from   table   where   rownum   between   1   and   50   可以取出来,但取
1后面的纪录集就不行了,(select   *   from   table   where   rownum   between   50   and   100   )总提示‘未选定行’!
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:结帖办法
  • zhuzhichao
  • (竹之草)
  • 等 级:
  • 2

    更多勋章
#3楼 得分:100回复于:2001-11-03 19:34:18select   *   from  
(select   rownum   r,*   from   TableName)   ss
where   ss.r   > =   90000   and   ss.r   <=   95000;

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:mysql-5.0.51a-linux-i686.tar.gz安装问题~(其他的安装类似)
  • homey123
  • (icemat)
  • 等 级:
#4楼 得分:0回复于:2001-11-03 21:55:24哈哈,现在好了,不过用*好像不行,不知道是不是版本的问题,不过换成具体列名就可以了,THX