日期:2014-05-17  浏览次数:20534 次

[提问]select 和 order by 是先选后排还是先排后选?
比如 select top 10 * from table order by ID desc, 这个输出的就是table表的后10条倒叙输出啊。
sql

------解决方案--------------------
先选后排,order by语句的优先级最低,select其次,比它高一点
------解决方案--------------------
参考官方文档 :
http://msdn.microsoft.com/zh-cn/library/ms189499.aspx

SELECT 语句的逻辑处理顺序
以下步骤显示 SELECT 语句的逻辑处理顺序(即绑定顺序)。 此顺序确定在一个步骤中定义的对象何时可用于后续步骤中的子句。 例如,如果查询处理器可以绑定到(访问)在 FROM 子句中定义的表或视图,则这些对象及其列可用于所有后续步骤。 相反,因为 SELECT 子句处于步骤 8,所以,在该子句中定义的任何列别名或派生列都无法被之前的子句引用。 不过,它们可由 ORDER BY 子句之类的后续子句引用。 请注意,该语句的实际物理执行由查询处理器确定,因此顺序可能与此列表不同。
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE 或 WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
------解决方案--------------------
引用:
先选后排,order by语句的优先级最低,select其次,比它高一点


最低的是top 
------解决方案--------------------
select的要比order的高一点
------解决方案--------------------
经常排序的地方要建好索引