생계/튜닝
[SQL]열거된 OR 제거하기. IN 사용
돌고래트레이너
2020. 11. 13. 23:12
개발자들은 SQL에 업무를 그대로 풀어서 작성하는 경향이 있다.
그러다보면 where 절에 or 를 자주 사용하게 되는데..
그러나 or 는 DB 가 일 할 범위를 줄여주지 못하고 늘려주기만 할 뿐이라 주의해야 한다.
or 는 in 으로 대체가 가능한 경우가 있는데 옵티마이저가 이를 알아서 바꿔주기도 하지만
많은 경우에 그러지 못하다.
이 경우 or 는 filter 처리되어 인덱스를 사용하지 못하고 나중에 처리되며 어떤 경우에는
모든 조인처리가 끝난 후에 처리 되기도 한다.
select
from xxx
where a = '1'
and ( b = '01' or b = '02' or b = '03' )
위처럼 작성된 쿼리는 아래로 바꾸는 것이 좋다.
select
from xxx
where a = '1'
and b in ( '01', '02', '03' )
반응형