인덱스 머지인 경우는 각각 단 하나의 컬럼으로 구성된 인덱스가 하나의 테이블에 2개 이상 있었을 때, 그 인덱스를 동시에 사용해 돌아가는 현상을 가리킨다. ROWID가 다른 경우는, ROWID가 작은쪽을 SCAN해가면서 ROWID가 같은 값을 찾아가고자 INDEX를 계속 번갈아가면서 사용한다. 따라서, 상당히 비효율적인 측면이 많이 있다.
결합인덱스인 경우는 두 컬럼을 모두 결합해서 하나의 인덱스로 만든 이상, 두 컬럼의 데이터가 이미 결합된채로 존재하는 것을 알 수 있다. 프로세스가 인덱스 머지에 비해 매우 간단하다.
첫번째 where절이 =이 아닌 이상 그 다음에 있는 컬럼들의 =들은 범위제한조건이 아닌 체크조건으로 해석된다. 따라서, 사실 상 첫번째 컬럼에 준 like 1가지만으로 해당 연도데이터를 다 찾아가게 만들었다라고 할 수 있다. 속도를 내기 위해서는 where절을 어떻게 바꾸어야 하나?
첫번째 컬럼에 부여된 조건을 =의 의미가 되도록 sql문을 다시 수정해야 한다.
where절 처음에 like로 줬을 때는 매칭률이 0/3이었다가 IN을 넣은 뒤, 2/3으로 개선되었다. 매칭률을 높였기 때문에 속도가 더 좋다라고 할 수 있다.