본문 바로가기
Infra

SQL 튜닝 case when

by GOMJ 2025. 10. 19.
select
 case when count(1) > 0 then 'y' else 'n' end as sb_yn
from ta, tb
where
 ~~~

메인 쿼리에 case when count() 을 사용하게 되면 전체 탐색을 하게 될 가능성이 있다.

 

count() 를 사용하면 전체를 읽어서 값을 가져온다. 

 

즉 존재 여부는 한번만 호출이 되면 되기에 전체가 n 이라면 n-1만큼 낭비라는 소리가 된다.

 

그럼 이걸 어떻게 개선할수 있을까?

 

정답은 rownum을 활용하는것이다.

 

 

select
 case when count(1) > 0 then 'y' else 'n' end as sb_yn
from ta, tb
where
 ~~~
and rownum <= 1

 

 

block 값을 보면 얼마나 개선이 되는지 알 수 있다

'Infra' 카테고리의 다른 글

SQL 튜닝 not exists  (0) 2025.10.26
L4 SNAT 세션 풀(Session Pool)  (0) 2025.10.26
TCP 3-way Handshake  (0) 2025.10.19
L4 SNAT란  (0) 2025.10.12
간단한 SQL 튜닝 팁 2탄  (0) 2025.10.09