SELECT * FROM t_plat WHERE plat_id IN
(SELECT DISTINCT plat_id FROM t_product
WHERE enable_flag = '1') (t_product表的数据为30万, plat_id distinct 的值为200个)
(SELECT DISTINCT plat_id FROM t_product
WHERE enable_flag = '1') (t_product表的数据为30万, plat_id distinct 的值为200个)
SELECT distinct a.* FROM t_plat as a
inner Join t_product as b
on a.plat_id=b.plat_id and b.enable_flag = '1'
left Join t_product as b
on a.plat_id=b.plat_id and b.enable_flag = '1'
楼上的改写SQL为join方式以后,和原来的效率不会有多大区别,不信可以去看执行计划。
SQL会自动优化这一点的。所以这个句子,只能从索引方面优化。
ps,用where关联和join关联,效果和效率都一样。只是个人习惯不同,可以选择不同的形式而已。