(1)概述
    select * from t1,t2 where t1.x1=xxx and t1.x2= t2.x2 and t2.x3=xxx 这个SQL执行的过程可能是这样的,首先根据t1.x1=xxx 这个筛选条件,去t1表查出来一批数据,此时 可能是const,ref 也可能是index 或者 all,都有可能,具体看索引如何创建,会挑一种执行计划访问方式。

    然后假设t1表里按照t1.x1=xxx 条件筛选出2条数据,接着对这两条数据,根据每条数据的x2字段值,以及t2.x3=xxx这个条件,去t2表里去找x2字段值和x3字段值都匹配的数据,比如 说t1表第一条数据的x2字段值是265,此时就根据t2.x2=265和t2.x3=xxx 这两个条件,找出来一批数据,比如找出来2条,此时就把t1表里x2字段为265的那个数据跟t2表里t2.x2=265和t2.x3的两条 数据关联起来,就可以了,t1表里另外一条数据也是如此。

    (2)驱动表
    先从一个表里查一批数据,这个表叫做“驱动表”,再根据这批数据去另一个表里查一批数据进行关联,另外一个表叫做“被驱动表”

    知识点
    left join时左边为驱动表右边为被驱动表,right join 反之,join操作时mysql优化器和进行选择小表为驱动表(小表指通过条件筛选后行数据更少),

    知识点
    在inner join下 on和where 是等价的,left join和right join 时根据是否要筛选条件来选择on和where,比如left join下on操作不管条件是否满足都会返回左边的数据,在 根据where去筛选结果 。

    知识点
    left join和right join的关联条件是 on, inner join下优化器会将 on 优化为 where SELECT * FROM t1 INNER JOIN t2 ON t1.id=t2.id