业务:一个产品可以有多个产品图片。
表:产品表-->b_product 产品图片表-->b_product_image(此表有一外键product_id)
需求:查询"一级分类"为Office的产品信息(产品图片也要显示)
这两条sql语句,谁执行的更有效率。
select * from b_product p LEFT JOIN b_product_image pi on p.id = pi.product_id where p.first_type = 'Office'
select * from b_product p LEFT JOIN b_product_image pi on p.id = pi.product_id and p.first_type = 'Office'
------解决思路----------------------
一样的,对执行计划没有影响。
PS:如果 这个条件是 pi 的列,就不一样了,两个语句就不等价了。
------解决思路----------------------
select * from b_product p LEFT JOIN b_product_image pi on p.id = pi.product_id where p.first_type = 'Office'
select * from b_product p LEFT JOIN b_product_image pi on p.id = pi.product_id and p.first_type = 'Office'
这两个语句效率上应该没有区别,不过抛开业务上的逻辑,从规范上来说,p.first_type是主表的条件,写在where里更合适,相反如果是pi表的条件的话应该写在on条件里