【发布时间】:2018-11-05 11:53:34
【问题描述】:
我对 SQL 查询的执行顺序感到困惑。
例如,(MySQL 中的Inner join 在下面的代码中),在WHERE 子句和SELECT * FROM 子句之间,首先解释和执行哪一个?
也就是说,下面的查询是不是先把tables data中的*(all)带进来,然后再找到符合WHERE条件的case呢?还是他们只是从WHERE 结果中找到与WHERE 条件匹配的data 列表,然后找到SELECT * FROM?
SELECT * FROM customers, orders
WHERE customers.id = orders.customer_id;
如上例,我想知道 SQL 查询一般是如何执行的。
【问题讨论】:
-
SQL 等语言的全部意义在于,您可以(从逻辑上)描述您想要什么,并让优化器决定如何最好地生成结果。这就是为什么例如与许多过程语言相比,SQL 对执行顺序的定义要松散得多。
-
见How to Ask。请研究。
标签: mysql sql inner-join