티스토리 뷰

728x90
반응형

where절 조건 검색을 위해서 case then 을 사용할 경우 성능 저하 문제점

1. index를 사용할 수 없다. index를 사용할 수 없다는 말은 (풀 스캔)을 한다는 말이다.

2. 실행 계획을 재사용할 수 없다. DBMS는 쿼리 실행 후 실행 계획을 만들어 재사용한다. 하지만 

   where 절에 case문을 사용할 경우 실행 계획을 재사용할 수 없다.

 

select
CC.CUST_NO  
,CA.NATION_CD as ca_nation_cd
from customer.DBO.AA CC with(nolock)
inner join customer.DBO.AA CA with(nolock)
on CC.CUST_NO = CA.CUST_NO 
and CA.default_yn = 'Y'
where 1 = (select case when @search_type = 'id' then 1 else 0 end)
and cc.member_kind = 'J'
and cc.partner_cust_id = @search_word

union

select
CC.CUST_NO  
,CA.NATION_CD as ca_nation_cd
from customer.DBO.AA CC with(nolock)
inner join customer.DBO.AA CA with(nolock)
on CC.CUST_NO = CA.CUST_NO 
and CA.default_yn = 'Y'
where 1 = (select case when @search_type = 'no' then 1 else 0 end)
and cc.member_kind = 'J'
and cc.partner_cust_no = @search_word

 

---------------------------------------------------------------------------------

 

and 조건 사용

 

and
(
(@onoff = '' and 1=1)
or
(@onoff <> '' and CC.IS_CONFIRM = @onoff)
)

728x90
반응형