我对SQL查询的执行顺序感到困惑。
例如,(下面代码中的Inner join
在MySQL
中),WHERE
子句和SELECT * FROM
子句之间,哪一个首先得到解释和执行?
也就是说,下面的查询是否首先带来了*
(all)的tables data
,然后找到符合WHERE
条件的情况?或者他们只是找到与WHERE
条件匹配的WHERE
列表,然后从WHERE
结果中找到SELECT * FROM
?
SELECT * FROM customers, orders
WHERE customers.id = orders.customer_id;
如前所述,我想知道SQL查询一般是如何执行的。
发布于 2018-11-04 09:46:44
查询文本的计算有一个逻辑顺序,但是数据库引擎可以根据最优的顺序选择执行查询组件的顺序。下面列出了逻辑文本解析顺序。例如,这就是为什么不能在SELECT
子句中使用WHERE
子句的别名。就查询解析过程而言,别名还不存在。
有关此问题的更多信息,请参见Microsoft文档(请参阅“SELECT语句的逻辑处理顺序”)。
https://stackoverflow.com/questions/53143613
复制相似问题