•  

这两条sql语句,哪位高手执行的更有效率。

2017-12-02

这两条sql语句,谁执行的更有效率。业务很简单,盼大神请教


业务:

一个产品可以有多个产品图片。


表:

产品表-->b_product    

产品图片表-->b_product_image(此表有一外键product_id)  


需求:

查询"一级分类"为Office的产品信息(产品图片也要显示)


这两条sql语句,谁执行的更有效率。
1、 select * from b_product p LEFT JOIN b_product_image pi on p.id = pi.product_id where p.first_type = 'Office'
2、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条件里
申明:本文受法律保护,未经作者同意不得用于商业用途,如转载请说明出处!
评论