MySQL: inner join时,为何on没有一定比where的性能好?

假设两个表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的过滤,感觉工作量明显比第一个语句大啊

为何很多说法,这俩性能表现几乎差不多?

阅读 2.6k
1 个回答

因为db实际执行真正查询时候并不会去做交叉,做交叉只是逻辑上的执行模型。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题