BookmarkSubscribeRSS Feed

[SAS 고급] 인덱스 사용하기2 (Using an Index2)

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 135

[SAS 고급] 인덱스 사용하기2 (Using an Index2)

 

안녕하세요^^

 

이번 시간에는 지난 시간 인덱스 사용하는 방법에 이어 두 번째 시간으로, WHERE 문장에서 인덱스 사용을 컨트롤하는 방법에 대해 알아보겠습니다.

 

 WHERE절에서 인덱스 사용을 컨트롤하는 방법입니다. 

 

SE22017041919090270.jpg

 

데이터셋의 옵션을 사용하여 SAS에서 직접적으로 인덱스를 사용할 수 있습니다.

 

 

▷ IDXWHERE=YES 

 

SE22017041919092870.jpg

 

위의 예시와 같이, IDXWHERE=YES를 지정하면, SAS가 인덱스를 사용합니다.

 

위의 코드를 작성한 뒤, 실행시키면 아래와 같은 로그결과를 얻을 수 있습니다.

 

SE22017041919094570.jpg

 

이 과정에서 SAS는 어떤 인덱스가 가장 좋은지 결정합니다. 

 IDXNAME=index-name

 

SE22017041919101470.jpg

 

위의 예시와 같이 IDXNAME= 옵션은 SAS가 특정 인덱스를 사용할 수 있도록 합니다. SAS는 데이터 셋에서 순차적으로 찾는 방법을 무시합니다.

 

마찬가지로 위의 코드를 작성한 뒤, 실행시키면 아래와 같은 로그결과를 얻을 수 있습니다. 

 

SE22017041919103770.jpg

 

IDXWHERE=과 INXNAME=은 상호 배타적인 관계입니다.

 

▶ SAS에서 인덱스를 유지하는 방법에 대해 알아보겠습니다.

SAS는 데이터를 업데이트 하는 방법을 사용하는 한, 인덱스를 유지합니다.

다음과 같은 방법으로 데이터를 같은 위치에서 업데이트 시킬 수 있습니다.


▷ PROC APPEND

▷ PROC SQL의 INSERT INTO 문장

▷ DATA STEP의 MODIFY 문장

 

 

▶ 참고로, SET이나 MERGE 문장에서는 데이터를 대체하기 때문에, SAS는 인덱스를 유지할 수 없습니다.

▶ 또한, 다음과 같은 상황에서 인덱스는 삭제됩니다.


▷ 데이터셋을 삭제할 때

▷ DATA STEP으로 데이터셋을 다시 만들 때

▷ PROC SORT에서 옵션으로 FORCE를 사용하여 데이터 셋을 정렬할 때

 

 

따라서, 인덱스가 있는 정렬된 데이터셋의 복사본을 만들거나, 인덱스를 유지하기 위해서, output file에 INDEX= 옵션을 사용할 수 있습니다.

 

SE22017041919114470.jpg

 

위의 예제처럼, OUT으로 file을 내보내며, INDEX= 옵션을 사용합니다.

 

이상으로 WHERE 문장에서 인덱스 사용을 컨트롤하는 방법에 대해 알아보았습니다.

 

감사합니다^^ 

 

 

 

 

 

 

 

 

 

Version history
Last update:
‎06-17-2020 02:47 AM
Updated by:
Contributors

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags