[SAS 고급] 인덱스 사용하기2 (Using an Index2)
안녕하세요^^
이번 시간에는 지난 시간 인덱스 사용하는 방법에 이어 두 번째 시간으로, WHERE 문장에서 인덱스 사용을 컨트롤하는 방법에 대해 알아보겠습니다.
▶ WHERE절에서 인덱스 사용을 컨트롤하는 방법입니다.
데이터셋의 옵션을 사용하여 SAS에서 직접적으로 인덱스를 사용할 수 있습니다.
▷ IDXWHERE=YES
위의 예시와 같이, IDXWHERE=YES를 지정하면, SAS가 인덱스를 사용합니다.
위의 코드를 작성한 뒤, 실행시키면 아래와 같은 로그결과를 얻을 수 있습니다.
이 과정에서 SAS는 어떤 인덱스가 가장 좋은지 결정합니다.
▷ IDXNAME=index-name
위의 예시와 같이 IDXNAME= 옵션은 SAS가 특정 인덱스를 사용할 수 있도록 합니다. SAS는 데이터 셋에서 순차적으로 찾는 방법을 무시합니다.
마찬가지로 위의 코드를 작성한 뒤, 실행시키면 아래와 같은 로그결과를 얻을 수 있습니다.
IDXWHERE=과 INXNAME=은 상호 배타적인 관계입니다.
▶ SAS에서 인덱스를 유지하는 방법에 대해 알아보겠습니다.
SAS는 데이터를 업데이트 하는 방법을 사용하는 한, 인덱스를 유지합니다.
다음과 같은 방법으로 데이터를 같은 위치에서 업데이트 시킬 수 있습니다.
▷ PROC APPEND
▷ PROC SQL의 INSERT INTO 문장
▷ DATA STEP의 MODIFY 문장
▶ 참고로, SET이나 MERGE 문장에서는 데이터를 대체하기 때문에, SAS는 인덱스를 유지할 수 없습니다.
▶ 또한, 다음과 같은 상황에서 인덱스는 삭제됩니다.
▷ 데이터셋을 삭제할 때
▷ DATA STEP으로 데이터셋을 다시 만들 때
▷ PROC SORT에서 옵션으로 FORCE를 사용하여 데이터 셋을 정렬할 때
따라서, 인덱스가 있는 정렬된 데이터셋의 복사본을 만들거나, 인덱스를 유지하기 위해서, output file에 INDEX= 옵션을 사용할 수 있습니다.
위의 예제처럼, OUT으로 file을 내보내며, INDEX= 옵션을 사용합니다.
이상으로 WHERE 문장에서 인덱스 사용을 컨트롤하는 방법에 대해 알아보았습니다.
감사합니다^^
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.