我觉得可以这么考虑,不管用什么方法,首先要了解条件的被使用顺序,然后分析每个条件产生的结果集,根据所有的结果集分析mysql的操作次数,如果次数差不多,一般应用层应该使用较少的sql语句!例如: select a.col2, b.col2, c.col2 from a left join b on b.col1=a.col1 left join c on c.col1=a.col1 where a.col1='1' 条件顺序依次为a.col1='1'(结果集为A), b.col1=a.col1(结果集为B), c.col1=a.col1(结果集为C),则操作次数为A×B+A×C,这对于分开3个语句来实现也是一样,所以应用层选择怎么做,就看应用层的开发方便而言了
速度应该一样
因为在JOIN之间,左表先WHERE,只取一条记录,再JOIN.如果把CORP表放在右边,那速度会很慢
select a.col2, b.col2, c.col2 from a left join b on b.col1=a.col1 left join c on c.col1=a.col1 where a.col1='1'
条件顺序依次为a.col1='1'(结果集为A), b.col1=a.col1(结果集为B), c.col1=a.col1(结果集为C),则操作次数为A×B+A×C,这对于分开3个语句来实现也是一样,所以应用层选择怎么做,就看应用层的开发方便而言了