계정이 달라지면.index scan을 왜 못하는거죠? 0 1 1,576

by 지훈 [Oracle 기초] [2012.05.11 18:21:59]


안녕하세요. 


HR계정으로 접속해서

create index emp_idx on EMPLOYEES(LAST_NAME , SALARY);
인덱스를 생성후

system 계정으로 접속해서 
select * from HR.EMPLOYEES where SALARY > 2000 order by LAST_NAME  하면

TABLE FULL SCAN 합니다. 
그러다 HR로 하면 INDEX FULL SCAN 하다가 다시 접하면 TABLE FULL SCAN하고요

아시면 ..좀알려주세용
이젠 계속 TABLE FULL SCAN하네요;;
인덱스 EMP_IDX 
LAST_NAME	25	ASC	
SALARY	22	ASC	
by 현 [2012.05.12 18:15:28]

왜 인덱스를 타지 못하는지는 정확히는 모르겠지만,
님께서 만드신 인덱스는 아주 나이스한 인덱스는 아니에요.
인덱스 선행컬럼에 조건을 받아야 인덱스 스캔을 할 수 있습니다.
(물론 skip scan도 있긴 하지만 위의 경우는 아닌듯 하네요.)

그리고,
무조건 인덱스를 사용하고 싶으시다면 힌트를 사용하세요...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입