sql 查询数据库最新的5000条数据,有没有什么快速的办法吗?

解决方案 »

  1.   

    select top 5000 * from tb order by 时间字段 desc
      

  2.   

    SELECT TOP(5000)
    rowno=ROW_NUMBER() OVER(ORDER BY GETDATE()), *
    FROM dbo.a
    ORDER BY rowno DESC
      

  3.   

    select top 5000 * from tb order by 时间段 desc
      

  4.   

     不带索引时,比如我想查询 在最新的5000条里,a大于100的数据
     select * from (select top 5000 * from tb order by 时间字段 desc) where a>100;
    这个句子是先遍历 tb表 查询到最新的5000条数据,然后再在5000条里找到大于100的数据吗?
         
      

  5.   


    是的 ,你这样操作是 先先遍历表tb将最新的5000条记录放在一个临时视图中,然后从这个视图中查出a>100的数据。
      

  6.   

    谢谢楼上的大侠,我刚接触sql,关于上面的问题我还想再问下:select top 5000 * from tb order by 时间字段 desc 这个语句的执行 是不是这样的? 从最后一个记录开始,当查询到5000条时停止返回结果还是从第一条记录开始,查询到最后1条结束,返回结果?
      

  7.   

    sql 运行机制应该是先排序,再查数据。即:先按时间字段对数据库数据进行降序排列,然后从排序后的数据选出前 5000条数据列出
      

  8.   

    select * from (select top 5000 * from tb order by 时间字段 desc) where a>100;
      有没有优化的方案呢?我是嵌入式系统发现数据大于10万条就超慢,要10秒左右,
      我已经建立了索引,没多大的改进效果,还有什么办法能优化吗?
      

  9.   

    还有一个问题就是 我原来的数据库已经有几万条数据,没有建立索引时存数的,之后我建立了索引是不是这个索引对以前的数据不起作用
     另外 where a%2=0;这种查询条件是不是不支持索引