[Oracle] 인덱스 스캔 효율화, 액세스 조건 필터 조건, BETWEEN과 IN-LIST


[Oracle] 인덱스 스캔 효율화, 액세스 조건 필터 조건, BETWEEN과 IN-LIST

인덱스 스캔 효율화 인덱스의 선행 컬럼이 조건절에 없으면 비효율이 발생할 수 있다. (A, B, C) 인덱스가 있을 때 선두 칼럼은 A, C의 선행컬럼은 B이다. 조건에 따라서 똑같은 데이터 개수를 가져오지만 스캔하는 인덱스 레코드 개수에서 큰 차이가 발생할 수 있음 ROWS Row Source Operation 10 TABLE ACCESS BY INDEX ROW ID BIG_TABLE (cr=7471 pr=1466 pw=0 ..) 10 INDEX RANGE SCAN BIG_TABLE_IDX (cr=7463 ...) 트레이스를 보게 되면 인덱스를 스캔해서 얻은 ROW는 10개인데 CR = 7463 부분에서 7463개의 블록을 읽었다는 걸 알 수 있다. 한 블록당 500개의 레코드를 담는다고 했을 때 10개를 얻기 위해서 약 370만 개의 레코드를 읽은 것이다. 액세스 조건과 필터 조건 인덱스를 스캔하는 단계에 처리하는 조건절은 액세스 조건과 필터 조건으로 나뉨 인덱스 액세스 조건은 ...


#Oracle #액세스조건 #인덱스 #필터조건

원문링크 : [Oracle] 인덱스 스캔 효율화, 액세스 조건 필터 조건, BETWEEN과 IN-LIST