2011-10-14 4 views
1

col1, col2, col3, col4에 복합 키가 있다고 가정 해보십시오. col2를 사용하면 SQL 쿼리 색인에서 col3가 실행되지 않고 전체 테이블 스캔을 수행합니다. col2, col3은 색인의 키를 구동하지 않을 수 있습니다).복합 키 관련 검색어

col2에 별도의 인덱스를 만들지 여부에 관계없이 col3이 유일한 솔루션입니다 (또는) 힌트 (또는) 다른 방식을 사용하는 것처럼 기존 인덱스를 작동시킬 수있는 방법이 있습니다.

+0

좋은 답변을 얻으려면 질문을 편집하여 쿼리의 ouptut, EXPLAIN에 붙여넣고 dbms로 질문에 태그를 답니다. –

답변

1

통계가 최신이라고 가정하면 dbms는 테이블 스캔이 더 빠르다고 믿기 때문에 dbms가 인덱스를 사용하지 않는 것이 좋습니다. col1은 쿼리에 포함되어 있지 않기 때문에 인덱스가 도움이되지 않습니다.

가장 간단한 수정 방법은 다른 색인을 만드는 것입니다.

create index on your-table-name (col2, col3); 

그러나 그렇다고해도 쿼리에서 사용한다는 보장은 없습니다. 작은 테이블에서는 전체 (작은) 테이블을 스캔하는 것보다 인덱스를 스캔 한 다음 테이블에서 행을 읽는 것이 더 효율적인 경우가 있습니다.

힌트가 쿼리에 미치는 영향은 dbms에 따라 다릅니다. 일부는 힌트를 전혀 지원하지 않습니다.