要看情况,有时可以用exists代替,有时只能用 or代替

解决方案 »

  1.   

    in用在这种枚举类型的情况下效率不会很低的,可以用or或union代替in(1,2,3,4)的写法,但是效率也不会提高的,只有在用在子查询的情况下才会影响效率:select * from t1 where id in (select id from t2)
    这种情况可以用exists代替:
    select * from t1 where exists(select 1 from t2 where t2.id = t1.id)
      

  2.   

    如果是IN子查询的话可以用EXIST代替,这钟列举的好象代替不了吧.