2011-09-14 7 views
0

많은 필드를 조인하는 쿼리가 있습니다. 몇 가지 이상한 이유로 하나의 테이블에 대한 인덱스가 전혀 사용되지 않고 있습니다 (인덱스 키를 명확하게 사용함) 대신 전체 테이블 스캔을 수행합니다. 나는 색인을 강제하고 싶다. 우리는 sybase에서 옵티 마이저 힌트를 사용했습니다. oracle에서 사용할 수있는 비슷한 힌트가 있습니까? 예를 들어, 테이블을 A, B, C 조인 및 테이블 A의 myindex를 사용하는 사이베이스에, 나는 할 것이다 :oracle에서 인덱스 강제 적용

SELECT a.* 
FROM  a(INDEX myindex), 
     b, 
     c 
WHERE a.field1 = b.field1 
AND  b.field1 = c.field1 

질문 내가 오라클에서이 작업을 수행 할 방법이다. 감사합니다. Saro

+1

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50405 – NullUserException

+0

당신이 쿼리 계획을 게시 할 수 없습니다 : 그것은 다음과 같이 보입니다? –

+4

쿼리 최적화 프로그램을 능숙하게 사용하는 것은 좋지 않습니다. 간단한 설명 : http://stackoverflow.com/questions/7358137/oracle-full-text-search-with-condition/7379753#7379753 – NullUserException

답변

4

예, 오라클에는 힌트가 있습니다.

select /*+ index(a my_index) */ from a 
+0

tablespec이 필요합니다 ([docs] (http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements006.htm#SQLRF50405) 참조). 오라클이 색인을 사용하지만 어느 색인을 지정하지 않으려는 경우 색인 이름은 선택적입니다. 그래서 그것은'INDEX (my_index)'이어야합니다. 그리고 테이블에 조회에 별명이 있으면, 별명을 테이블 스펙으로 사용해야합니다. –

+0

감사합니다. 그래서 당신은 내가 이런 식으로 뭔가해야 할 말 : SELECT/* + 인덱스 (A my_index를) */A * A (INDEX의 myindex), \t \t B, \t \t C a.field1 = B FROM. .field1 AND b.field1 = c.field1 –

+1

@Saro - no :'SELECT/* + index (a my_index) */a. * FROM a, b, c WHERE a.field1 = b.field1 AND b.field1 = c.field1'. (ANSI 조인을 사용하는 것이 좋지만 다른 주제입니다 ...) –

관련 문제