아이템 검색시 보통 다음과 같이 하죠.
AND item_name LIKE :v_item_name || '%'
위에 말씀하신 경우는 전체 검색시에 널대신 아예 '%'를 넘기는 형태인 듯 하네요.
AND item_name LIKE :v_item_name
v_item_name 에 값이 입력되지 않으면 전체검색을 하게 하기 위함이죠.
이 경우 실행계획이 한쪽으로만 고정되겠지요 ( index range scan )
다음과 같이 바꾸시면 두가지 실행계획으로 분리가 됩니다.
AND item_name = DECODE(:v_item_name, '', item_name, :v_item_name)
- 조건이 입력되면 : ( index unique scan )
- 조건이 입력되지 않으면 : ( table full scan ) 또는 ( index full scan )