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个)

解决方案 »

  1.   

    --先建立好索引
    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'
      

  2.   

    SELECT a.* FROM t_plat as a
    left Join t_product as b 
    on a.plat_id=b.plat_id and b.enable_flag = '1'
      

  3.   

    给plat_id建立索引
    楼上的改写SQL为join方式以后,和原来的效率不会有多大区别,不信可以去看执行计划。
    SQL会自动优化这一点的。所以这个句子,只能从索引方面优化。
    ps,用where关联和join关联,效果和效率都一样。只是个人习惯不同,可以选择不同的形式而已。