티스토리 뷰

카테고리 없음

Query] 조건절 변화

James Wetzel 2014. 12. 24. 10:58
728x90
반응형

  declare @CmCode varchar(20)

set @CmCode = '05'


select top 20

row_number() over(order by a.RegDate asc) as No

, a.Uid

, b.CodeName

, a.Subject

, a.Content

, a.IsTop9

, a.ReadCnt

, a.RegDate

from t_faq as a with(nolock)

left join t_common_code as b with(nolock)

on a.Consult = b.CmCode

where (

(@CmCode = '' and 1=1)

or (@CmCode = '05' and b.CmCode = @CmCode)

)

and b.CmClass = 'CONSULT'

order by a.RegDate desc



이 쿼리문의 단점은 OR 연산의 경우 인덱스 설정과 관계 없이 전체 스캔을 한다고 한다.

그래서   UNION ALL 을 사용한다고 한다.

728x90
반응형