解决方案 »

  1.   

    要记住一个东西,唯一能保证结果集(不是表,是查询的中间结果)有序的方式是加上order by子句(当然不是加了就一定有效,还有一些小细节,比如order by中列的唯一性等等),即使有聚集索引,优化器可能在面对多数据文件时进行并行查询导致数据结果并不如意,所以如果你要查询前N条,加上order by才保险
      

  2.   

    需要一个排序顺序,才好说top 多少。所以需要order by 
      

  3.   

    第一条之所以不行,因为单纯的top 30并不保证是按数据的逻辑存储顺序来找,找出来的你可以认为是一个不稳定的结果,那么max得出来的自然也不能保证
      

  4.   

    因为机器毕竟是机器,人眼看得出的东西sqlserver不一定能同样做到,需要一定的“准备工作”实际上人脑也是做过这种工作,只是潜意识完成而已