数据库Table1里有数据约20万条,已建立按时间字段StartTime的降序排列的索引
我现在要查询StartTime排在 100,000 和 100,010 之间的数据,请问应如何查询?尝试过以下方法:
    先 Select top 1000,010 * from [Table1] order by [StartTime] desc
    然后把游标往下移动 99999次再往下读10条
    结果内存缓冲区不足,出现错误请问该如何解决?

解决方案 »

  1.   

    select top 11 * from 
    (
      select top 100010 * from table1 order by [StartTime] desc
    ) t
    order by StartTimeselect top 11 * from 
    (
      select top 100010 * from table1 order by [StartTime] 
    ) t
    order by StartTime desc
      

  2.   

    with leno as
    (
    select *,row_number() over(order by id) rownumber
    from tab
    )
    select * from leno where rownumber between 100000 and  100010 
      

  3.   

    错了,
    with leno as
    (
    select *,row_number() over(order by StartTime desc) rownumber
    from tab
    )
    select * from leno where rownumber between 100000 and  100010 
    可以将StartTime 建聚集索引
      

  4.   

    1楼方法不行。
    top 10010 会占用过多的内存缓冲区3楼的方法会占用多少内存?
      

  5.   

    二楼的就行啦
    select top 11 * from 
    (
      select top 100010 * from table1 order by [StartTime] 
    ) t
    order by StartTime desc
    10010算什么多,很快的