Akashic Records

옵티마이저의 Index 선택 기준 본문

오래된글/DataBase

옵티마이저의 Index 선택 기준

Andrew's Akashic Records 2018. 4. 15. 22:19
728x90

옵티마이저의 Index 선택 기준


1. equal(=) 조건으로 사용되는 where 절의 컬럼 중에서 매칭율이 높은 것을 선택


인텍스 매칭율 = 질의문에서 처음부터 연속해서 equal 조건으로 사용된 인텍스 컬럼 개수/인덱스를 구성하는 컬럼 개수


2. 인덱스 매칭율을 계산할 때 선행하는 컬럼 순서로 연속된 경우만을 인정


예)

emp_ix emp.deptno

dpt_pk dept.deptno


select a.empno, a.ename, b.dname

from emp a, dept b

where a.deptno = b.deptno

and a.deptno = 20


emp_ix 인덱스 매칭율 100%, dept_pk 인덱스 매칭율 0%

emp_ix인덱스를 사용하게 되며 emp 테이블이 드라이빙 테이블로 선정


select a.empno, a.ename, b.dname

from emp a, dept b

where a.deptno = b.deptno

and b.deptno = 20


emp_ix 인덱스 매칭율 0%, dept_pk 인덱스 매칭율 100%

dept_pk 인덱스를 사용하게 되면서 dept 테이블이 드라이빙 테이블로 선정


예)

select a.b.c.d from table

where A='가'

and B like '나'%

and C='다'

and D='라'


A_INDEX=A+B+C+D 25%

B_INDEX=A+E 50%

C_INDEX=A+D+E+F 50%

D_INDEX(최근생성)=A+C+F+E 50%


인덱스 컬럼 매칭율이 100% 인 경우에 unique 인덱스가 있는 경우라면 uniue 인덱스를 선택

똑같은 인덱스 매칭율 50% 이지만 컬럼수가 많은 C_INDEX, D_INDEX가 우선하고, 그중에 최근에 생성된 D_INDEX가 선정됨



728x90

'오래된글 > DataBase' 카테고리의 다른 글

한달을 요일별로 구함  (0) 2018.04.15
인덱스 컬럼의 매칭율 높이는 방법  (0) 2018.04.15
Oracle LOCK걸린 Session Kill  (0) 2018.04.15
Oracle - 숫자 함수  (0) 2018.04.09
Oracle - 변환 함수  (0) 2018.04.09
Comments