2011-03-09 9 views
2

가입 할 수 있습니다. 이 테이블의 인덱스는 col4 및 col5에 대해 존재합니다. 쿼리 성능이 향상되도록 col1, col2, col3 각각에 대해 인덱스를 설정해야합니까?오라클 지수는

select * 
    from table1,table2 
    where table1.col1=table2.col2 
     and table1.col2 = 'yy' 
     and table1.col3= 'zz' 

우리가 COL1과 COL2에 인덱스를 작성하는 경우, 그것은 충분합니다 :

은 또한 쿼리는 다음과 같은 경우?

답변

1

당신해야 쿼리에 사용되는 열에서 인덱스를 추가하려고 :

  • 표 1의 COL1
  • 표 1의 COL2
  • 표 1의 COL3
  • 표 2 COL2

주 경우에 따라 다중 열 인덱스를 사용하는 것이 유리할 수도 있습니다 (예 :

).
  • 표 (COL2, COL3)

그것은 당신의 데이터에 대한 자세한 내용을 알고 있기없이 최선을 작동하는 인덱스 예측하기 어렵습니다,하지만 당신은 몇 가지 다른 가능성을 시도하고 가장 적합한 볼 수 있습니다.

+0

감사합니다. 당신은 '데이터에 대해 더 알지 못해도'언급했습니다. 모든 컬럼에서 인덱스를 만들기 전에 확인할 수있는 것은 무엇입니까? – Victor

+0

@Kaushik : 중요한 것은 색인의 선택성입니다. 데이터베이스는 일반적으로 가장 선택적 색인을 사용하는 것을 선호합니다. 어떤 것이 더 나은 인덱스인지 쉽게 알 수있는 방법은 사용할 것으로 생각되는 모든 인덱스를 추가 한 다음 쿼리 계획을보고 실제로 사용 된 인덱스를 확인하는 것입니다. 그런 다음 필요하지 않으면 다른 색인을 다시 제거 할 수 있습니다. 명백하게 이것은 적당한 양의 테스트 데이터가있는 테이블을 가지고 있으면 더 잘 작동합니다. 테이블이 거의 비어 있으면 인덱스가 사용되지 않고 수십억 개의 행이있는 경우 인덱스 생성에 오랜 시간이 걸립니다. –