VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  连接分为 inner join,left join,right join,full join,cross join,在 MySQL 中 inner join 等价于 cross join;

  左连接和右连接优化:1,全部 join 优化都用得上;2,全部 WHERE 优化都用得上;3,如果表 A 存在记录符合 WHERE 子句的条件,但表 B 没有记录符合 ON 条件,则在表 B 会生成一行全部数据都为空的记录;

            4,当 WHERE 子句中的条件总是 false,应该尽量把左连接和右连接转化成 INNER JOIN,因为效率更高,且这种情况中 左连接/右连接查询的结果和 INNER JOIN 的结果一样,如下(说实话,现在看回第四点,发现这点没什么意义,我们不会知道条件总是 false,我们知道的话,也就不会这样写了):

SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;

  例如,当 t2.column2 总是为 NULL,应该将其转化成如下的 SQL 语句:

SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;

  

    

posted on 2016-12-06 09:36  bobo2018  阅读(139)  评论(0)    收藏  举报