表T1 包含字段F1, F2, F3, F4, F5, F6 共有记录数200万条字段F2是时间类型 在表T1上已建立字段F2索引请问如何快速返回满足条件所的时间最早的20条记录 我是这样写的select * from (select * from T1 where F3='AAA' order by F2) where Rownum<20

解决方案 »

  1.   

    select * from T1 
    where F3='AAA' and Rownum <=20
    order by F2
    --请问如何快速返回满足条件所的时间最早的20条记录   我是这样写的 
    --按这个要求,和f3无关啊.select * from T1 
    where Rownum <=20
    order by F2
      

  2.   

    潇洒老乌龟, 你的想法错了,在Oracle中rownum不会按照order by之后的顺序来生成, 所以必须要写成子查询的方式order by之后重新生成rownum. LZ那样写是对的,只不过order by的速度会很慢 ..
      

  3.   

    同意mantisXF的意见,可以先限定记录的条数,然后再order by,不过那样产生的不一定是按照时间排序的那前20条了。