如图中例子:
SELECT cust_name,cust_contact
FROM customers,orders,orderitems
WHERE customers.cust_id = orders.cust_id
AND orderitems.order_num = orders.order_num
AND prod_id = 'TNT2';
这里的顺序是,先过滤出最后一行中orders.prod_id='TNT2'd的产品,然后用返回的行去匹配orderitems.order_num的行,最后用结果去匹配customers.cust_id,然后返回最后匹配的行.
问题1.为什么是这个顺序?虽然逻辑上是正确的,但mysql语言并没有逻辑吧,只能按照我们给的语句去执行.有同学说从左到右从上到下,那也不对啊?也有同学说按照驱动表,先过滤驱动表中的数据,RBO中一般情况下是from后最后一张是驱动表,CBO中输出数据量最少的是驱动表.但这么看也不对啊?
问题2.怎么去总结WHERE字句中有多个条件时执行的顺序?
问题3.假设使用INNER JOIN字句,条件在ON字句中给出时,顺序是否跟WHERE字句一样?
最后先谢谢解答的大神