一直以来我对order by的理解是针对select结果进行排序,也就是说,先select出来结果以后再order by列,但是下面这个语句让我有点不确定了
SELECT TOP 10 * FROM Northwind..Orders ORDER BY NEWID()
这个语句的作用是,随机挑选10个结果,如果按照我一开始那样理解的话,先select,然后再order by,那么这个语句是不成立的,最终结果也只是针对头10个记录做随机排序而已.从这个句子看来,order by的优先权应该是最优先的,也就是在select之前就已经对整个表做了一次排序,然后再进行select,但是这样从逻辑上来讲,似乎会浪费更多的资源,所以两种情况都不是很确定,希望有大侠能解释一下...
------最佳解决方案--------------------
当存在top的时候,order by会对表再次扫描
------其他解决方案--------------------
楼主模糊的只是order by和top的执行顺序而已,order by比top的执行顺序靠前,也就是说排好序后再选取对应的数据。
------其他解决方案--------------------
先排序后再取top的
------其他解决方案--------------------
谢谢3个老大,哈哈,明白了