我对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 17:46:44
查询文本的计算有一个逻辑顺序,但是数据库引擎可以根据最优的顺序选择执行查询组件的顺序。下面列出了逻辑文本解析顺序。例如,这就是为什么不能在SELECT子句中使用WHERE子句的别名。就查询解析过程而言,别名还不存在。
有关此问题的更多信息,请参见Microsoft文档(请参阅“SELECT语句的逻辑处理顺序”)。
https://stackoverflow.com/questions/53143613
复制相似问题