我知道执行结果是不同的,现在问在不同情况下用(left join或right join) 和一直用inner join效率上区别多大。。。。 这里的不同情况下用(left join或right join)是指根据不同情况选择left或right查询使结果没null null的前提下。
如果两个表一样大,效率是一样的。如果两个表的数据量相差很大,那效率上是有区别的。一般来说,小表去join大表,效率要比大表去join小表高的多。通常SQL会自动去选择效率好的查询方案。但如果在join之前已经有很多的join,那SQL一般会按join出现的顺序进行查询。所以写SQL尽量先查询和过滤数据量小的表,再去join大的表。
给个通俗的解释吧. 例表aa aid atitle 1 a1 2 a2 4 a4 表bb bid btitle 1 b1 2 b2 3 b3 两个表a,b相连接,要取出id相同的字段 select * from aa inner join bb on aa.aid = bb.bid这是仅取出匹配的数据. 此时的取出的是: aid atitle bid btitle 1 a1 1 b1 2 a2 2 b2 那么left join 指: select * from aa left join bb on aa.aid = bb.bid 首先取出a表中所有数据,然后再加上与a,b匹配的的数据 此时的取出的是: aid atitle bid btitle 1 a1 1 b1 2 a2 2 b2 4 a4 null null 同样的也有right join:select * from aa right join bb on aa.aid = bb.bid 指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 此时的取出的是: aid atitle bid btitle 1 a1 1 b1 2 a2 2 b2 null null 3 b3