답변:
예. 인덱스의 일부를 쿼리하려고 할 때 이점이 있습니다. 부분 사용 술어를 먼저 넣으면 인덱스의 모든 열이 아닌 해당 술어를 포함하는 쿼리에 인덱스를 사용할 수 있습니다.
또한 다른 요구 사항이 없으면 인덱스 탐색 조작을 더 빨리 다룰 수 있으므로 가장 선택적인 술어를 먼저 배치하는 데 도움이 될 수 있습니다.
귀하의 경우 IDX_2
테이블의 쿼리 특성에 따라 반드시 중복되는 것은 아닙니다. 그러나 모든 열을 포함 할 필요는 없습니다. 예를 들어, 당신은에 의해 쿼리를 많이 할 경우 location
와 date
다음 IDX_2
으로 그 쿼리를 해결하는 데 도움이에게 유용 할 수있는 IDX_1
이 유용 할 수있는 권리 순서에 있지 않습니다. 그러나에 item
중복되는 것을 찾을 수 있습니다 IDX_2
.
9i부터 Oracle은 후행 인덱스 열을보다 효율적으로 쿼리 할 수 있는 '건너 뛰기 스캔' 연산자를 도입하여 이러한 종류의 보충 인덱스의 필요성을 줄일 수 있습니다.
보다 구체적인 경우, 쿼리하는 경우 item
로 location
하고 date
테이블에서 아무것도 읽을 필요없이 다음 쿼리가 완전히 인덱스 불구하고 해결 될 수있는 다른 열을 필요로하지 않습니다. 색인화되지 않은 열이 연결된 색인을 포함 할 수도 있습니다. 포함 인덱스에서 필요한 모든 열을 해결할 수있는 경우 쿼리는 기본 테이블을 전혀 건드릴 필요가 없습니다.
마지막으로, 마지막 질문에 대한 답으로 : 많은 리소스를 사용하고 색인을 사용하여 조정할 수있는 정기적으로 사용되는 쿼리 세트가있는 경우 고려할 가치가 있습니다. 그러나 인덱스 유지 관리에는 인서트 오버 헤드가 포함되므로 인덱스가 인서트 또는 업데이트 작업에서 발생하는 오버 헤드와 쿼리 성능을 떨어 뜨려야합니다.