변수로 들어 오는 문자열을 substring으로 잘라낸후 "%" 문자를 붙여서
like 로 비교하는 구문인데 예상과 다르게 그냥 table full scan 을 타버리더라구요.
begin
declare @wedi_cd varchar(09)
select @wedi_cd = 'M0111'
select a.edi_cd
from hb_edi_detail a
where a.edi_cd like substring(@wedi_cd, 1, 5) + "%'"
end
hb_edi_detail 테이블에 edi_cd 컬럼으로 인덱스는 생성 되어 있으며 강제로 인덱스를 지정해두면 인덱스 full scan 현상이 일어나 어찌되든 i/o가 많이 발생 하더라구요
where a.edi_cd like substring(@wedi_cd, 1, 5) + "%'" 이 문장이
where a.edi_cd like 'M0111%' 처럼 동작하길 기대 하는데 왜 안될까요..ㅜ.ㅜ;; |