现在有一张表 order ,有20万条记录,用 select top 200 * from order 查询大约要13秒,直接select  * from order 查询出这个20多万记录,只需要8秒,有哪位知道是什么原因呢?
  
  另外,这个是在新买的电脑上测试的,在用以前的就电脑的时候,用top比直接用select * 要快,用新电脑反而慢了

解决方案 »

  1.   

    那是因为要排序嘛 你order by的字段估计不是聚集索引(主键)
      

  2.   

    多运行几次,看结果是不是一致的,另外看看TOP时有没有排序。
      

  3.   

    select top 200 * from order ...这条语句有排序的问题导致运行时间长的问题。
      

  4.   


     select top 200 * from order by xx
    --sql server 先取出所有数据 然后排序
    --解决办法 对order by 后面的xx列 加索引(这样会对索引排序,然后lookup效率就提高了)
      

  5.   


    LZ用系统关键字order作为表名就是个杯具。
      

  6.   

    SELECT TOP(200)* FROM TB --先扫描表tb-在执行排序-输出
    SELECT FROM TB  --描表tb-输出
      

  7.   

    排序字段未建立索引的话,这两个操作都需要把全部记录从硬盘读入内存,不同的是top还要进行计算(即排序),而另一个则直接输出,所以top慢;
    有索引的话,top是将索引读进内存(这个比全部记录肯定要小的多)分析出前200条,再把相关记录(不是全部)读入内存并显示,另一个仍然是读入全部记录并显示,所以top快