当前位置: 代码迷 >> Oracle管理 >> 这两条sql语句,哪位高手执行的更有效率。业务很简单,盼大神请问
  详细解决方案

这两条sql语句,哪位高手执行的更有效率。业务很简单,盼大神请问

热度:307   发布时间:2016-04-24 04:02:50.0
这两条sql语句,谁执行的更有效率。业务很简单,盼大神请教
业务:一个产品可以有多个产品图片。
表:产品表-->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条件里
  相关解决方案