假设两个表a和b,a有100行
b有50行,其中price=3的有10行
下面两个语句
select * from a inner join b on a.id=b.id and b.price=3
和
select * from a inner join b on a.id=b.id where b.price=3
第一个语句,是100行和10行联表产生结果,100x10次交叉
第二个语句,先100行和50行联表产生结果,100x50次交叉,然后再对这5000个交叉进行b.price=3的过滤,感觉工作量明显比第一个语句大啊
为何很多说法,这俩性能表现几乎差不多?
因为db实际执行真正查询时候并不会去做交叉,做交叉只是逻辑上的执行模型。