cross join + where vs join + on
2018-04-19 本文已影响13人
黑山老水
以下两种query会产生相同结果:
select *
from t1, t2
where t1.xx = t2.xx and t1.yy = t2.yy
和
select *
from t1 inner join t2
on t1.xx = t2.xx and t1.yy = t2.yy
第一种是cross join,所以也可以写成from t1 cross join t2
,cross join会先产生笛卡尔积,然后再根据where的情况筛选符合的rows。这样效率比直接inner join + on的效率低。但是以大O计数来看,他们的时间复杂度都是O(n^2)