关系型数据库是不考虑数据的物理存储位置的。
假如数据真的是顺序存储的话(实际情况并不总是这样),可以试试select * from 
(select t.*,rownum row_num from temp t where rownum<=20)
where row_num>=11

解决方案 »

  1.   

    select * from
    (select t.*,rownum r from t) a
    where a.r between 11 and 20;
      

  2.   

    select * from temp where rownum<21
    minus
    select * from temp where rownum<11
      

  3.   

    应该是
    select * from
    (select t.*,rownum r from t) a
    where a.r between 11 and 20; 
    的速度稍快些!但是不一定每次取的数据都是一样的结果呀!
      

  4.   

    这样写行不行?  
     select * from (select top(20) from Temp) where not in (select top(10) from Temp)先不说性能,只说能不能执行(对不对)?
      

  5.   

    你的数据库是什么?
    ORACLE
    还是
    SQL SERVER
      

  6.   

    2个字段,10万条记录,直接cache到内存中最快^_^
    另外也可以试试这个;
    select * from temp where rowid in (
      select rid from (
        select rowid as rid,rownum as rn from temp 
         where rownum<21)
      where rn >10);
      

  7.   

    select * from temp as a where 
     (select count(name) from temp where name <= A.name) 
        between 11 and 20 order by name
    效率应该有一点吧,呵呵...........
      

  8.   

    我做了测试,用select * from temp as a where 
     (select count(name) from temp where name <= a.name) 
        between 11 and 20 order by name
    查询,3万条记录P42.4,512,7200转的用时2分15秒