개발자들은 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' )
반응형
'생계 > 튜닝' 카테고리의 다른 글
rac 환경 통계수집 후 no_invalidate (0) | 2023.06.10 |
---|---|
오라클 AWR 사용하기 (0) | 2023.05.13 |
동일패턴 추가되는 NOT IN 절 (0) | 2019.11.01 |
[SQL] 전월 증감 리포트 (0) | 2019.11.01 |
GROUP BY 로 가공되어 처리범위를 줄여주지 못하는 인라인뷰 (0) | 2019.11.01 |