刚入行没多久,我发现很多同事的sql 写的关联查询都是 基本的 on a.id = b.id 就开始where了 
但是后来知道了 on的执行是比较优先的,所以把where 内的 过滤都扔 on 上了 , 最近看书才知道原来这叫复合查询所以有个问题:
 on 是不是和 where 一样的写法? 过滤数据量大的放前面 。
还有 我觉得on 完全可以代替where 了 ,现在我一用到关联查询,基本 where 里面都没有东西了 ,不知道是不是走歪了
来求证一下观点

解决方案 »

  1.   

    on 有  left /right /inner join ,left / right 的情况和 where 是有区别的的
    两表用 where 和 on 在阅读上没什么区别,但多表的情况,on 比 where 列清晰,更容易看出表之间的关系
    至于 on 优先的说法,通常是不存在的,你可以通过 explain 查看执行计划来对比两种写法
      

  2.   

    on不就是将2张以上表连接成一张临时表,然后在通过where过滤出最后结果吗?