2012-05-21 4 views
2

필드 'A'로 정렬 된 큰 SAS 데이터 세트가 있습니다. 필드 'A'와 'B'를 참조하는 쿼리를 수행하고 싶습니다. 성능 향상을 위해 'B'에 대한 색인을 만들었습니다. 이로 인해 도움이되지 않는 메시지가 나타납니다.SAS에서 내 색인을 사용하지 않은 이유는 무엇입니까?

INFO: Index B not used. Sorting into index order may help. 

물론 B를 정렬하면 도움이됩니다. 그러나 그것은 중요한 것이 아닙니다. 색인은 다른 필드에서 이미 정렬 된 경우를위한 것입니다.

INFO: Use of index C for WHERE clause optimization canceled. 

SAS 내 인덱스를 사용하기에 대한 모든 팁 :

유사한 쿼리에서

는 SAS는이 메시지를 준다? SAS가 색인을 사용하지 않기 때문에 쿼리를 실행하는 데 2 ​​시간이 걸리는 경우가 있습니다.

+0

테이블에 몇 개의 관측치가 있으며 인덱싱 된 열의 카디널리티는 무엇입니까? –

답변

0

실행하려고하는 쿼리를 보지 않고서도 이와 같은 질문에 답할 수 없습니다. SAS 옵티마이 저가 성능을 향상시킬 것이라고 판단한 경우에만 인덱스가 유용합니다. 실행할 코드의 간단한 예제를 보여줄 수 있습니까?

3

쿼리가 선택적으로 충분하지 않은 경우 - 대부분의 소스 레코드를 결과로 가져 오면 인덱스 사용이 성능에 도움이되지 않을 수 있으며 결과적으로 상황이 악화 될 수 있습니다. 이것이 옵티마이 저가 인덱스를 사용하지 않기를 원하는 이유 일 것입니다.

강제로 인덱스를 사용하려면 IDXNAME 데이터 세트 옵션을 사용하십시오 (두 테이블 모두에서 가능). http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000414058.htm을 참조하십시오.

쿼리를보고 데이터의 일부 특성 (최소한 입력 테이블의 레코드 수 및 쿼리 결과의 예상 크기)을 알지 못하면 최적의 방법을 알기 어렵습니다.

어쨌든 최적의 성능을 위해 테이블을 조인 할 때 두 테이블 모두 비슷하게 인덱스되어야하며 모든 조인 키가 인덱스의 일부 여야합니다.