Bac*_*b32 0 mysql sql inner-join
我对 SQL 查询的执行顺序感到困惑。
例如,(Inner join在MySQL下面的代码中),在WHERE子句和SELECT * FROM子句之间,哪一个首先被解释和执行?
也就是说,下面的查询是否会带来第一个*的(全部)tables data然后找到与条件匹配的案例WHERE?data或者他们只是找到符合条件的匹配列表WHERE,然后SELECT * FROM从WHERE结果中找到?
SELECT * FROM customers, orders
WHERE customers.id = orders.customer_id;
Run Code Online (Sandbox Code Playgroud)
如上所述,我想知道 SQL 查询一般是如何执行的。
查询文本的评估有一个逻辑顺序,但数据库引擎可以根据最佳顺序选择执行查询组件的顺序。下面列出了逻辑文本解析顺序。例如,这就是为什么不能SELECT在WHERE子句中使用别名 from 子句。就查询解析过程而言,别名还不存在。
从
在
外
在哪里
通过...分组
立方体 | ROLLUP(这些在 MySQL 中不存在,但在其他一些 SQL 方言中存在)
拥有
OVER(窗口函数)
选择
清楚的
订购依据
LIMIT(或者在 MSSQL 中为 TOP)
有关详细信息,请参阅Microsoft 文档(请参阅“SELECT 语句的逻辑处理顺序”) 。