ABAP Dictionary에서 테이블 인덱스(Index)를 생성하고 활성화 하는 방법


ABAP 프로그램을 개발하면서 쿼리문을 작성할 때 고려해야 할 여러 조건 중에 SELECT 쿼리문의 실행 속도는 무척 중요하게 고려해야 할 사항입니다. 원하는 결과를 얻을 수 있는 쿼리문이지만 실행 시간이 너무 오래 걸린다면 결코 좋은 쿼리문이 되지 못합니다.

SELECT 쿼리문의 실행 시간에 가장 큰 영향을 미치는 것은 테이블의 인덱스(Index) 입니다.
동일한 결과를 가져오는 쿼리문이라도 인덱스를 통해 가져오는 경우와 그렇지 않은 경우의 실행 속도에는 엄청난 차이가 발생합니다.
테이블의 레코드 건수가 많을수록 실행 속도의 차이는 더욱더 크게 벌어집니다.

SELECT 쿼리문의 실행 속도를 높이기 위해 인덱스가 꼭 필요하지만 그렇다고 무작정 인덱스를 만들 수는 없습니다.
수없이 많은 다양한 쿼리문에 대응하는 인덱스를 모두 만들 수는 없기 때문입니다.

구현할 수 있는 여러 방법을 사용했음에도 불구하고 부득이 인덱스가 필요한 경우에 한해 인덱스 생성을 권해 드립니다.
테이블 사이즈가 큰 스텐다드 테이블의 인덱스 생성은 BC 담당자와 협의 후 진행할 것을 권장 합니다.

이번 글에서는 ABAP Dictionary에서 테이블 인덱스(Index)를 생성하고 활성화 하는 방법에 대해 알아보겠습니다.

ABAP Dictionary에서 테이블 인덱스(Index)를 생성하기

※ 참고로 ABAP에서 인덱스 정의에 대한 설명은 SAP ABAP에서 인덱스(Index)의 정의 및 쿼리문에서 인덱스가 적용되지 않는 원인 글에서 참고하시기 바랍니다.

1. ABAP Dictionary(SE11)에서 인덱스를 생성할 Table을 데이타베이스 테이블에 지정하고 조회(Display)를 클릭합니다.

ABAP Dictionary에서 테이블 인덱스(Index)를 생성하기

2. Dictionary 테이블 조회 화면에서 상단 인덱스… 버튼을 클릭합니다.

SAP INDEX 생성하기 - Dictionary 인덱스

3. 기존에 만들어진 인덱스 목록이 나오는 화면에서 Create Index 버튼을 클릭합니다.

SAP INDEX 생성하기 - Create Index

4. 새로 만들 인덱스 ID를 지정합니다.

SAP INDEX 생성하기 - 인덱스 ID

5. 메세지 창이 뜨면 계속해서 다음 화면으로 넘어갑니다.

SAP INDEX 생성하기 - 확인

6. 로그온언어 유지보스 버튼을 클릭합니다.

SAP INDEX 생성하기 - 로그온언어 유지보수

7. Short Description에 인덱스의 내역을 입력합니다.

8. 인덱스로 만들 필드를 아래 인덱스필드에 순서대로 추가 합니다.

SAP INDEX 생성하기 - 내역 입력

9. 내역과 필드를 모두 입력하였다면 Activate 아이콘을 클릭해서 활성화 시켜주면 인덱스가 생성됩니다.

SAP INDEX 생성하기 - 활성화

※ 이때 운영 서버로 넘기기 위해 CTS 생성을 위한 화면이 뜨는데 CTS 관련 작업에 대해 설명은 이 글에서 따로 기술하지 않겠습니다.

데이터베이스 유틸리티에서 INDEX 생성 추가 작업하기

일반적으로 위의 인덱스 생성 과정만 완료하면 정상적인 인덱스가 만들어 집니다.

하지만 대용량 테이블의 인덱스를 생성하거나 기타 다른 요인에 의해 인덱스가 DB에 정상적으로 만들어지지 않는 경우가 있습니다. 즉, 껍데기만 만들어지고 실제 인덱스 데이터가 생성되지 않는 경우가 생깁니다.

이를때 아래의 추가 작업을 진행해 주시면 됩니다.

1. Dictionary 테이블 조회 화면에서 상단 유틸리티 – DB 오브젝트 – 데이타베이스 유틸리티를 차례로 선택합니다.

    T-code : SE14도 동일 작업을 위한 트랜잭션코드 입니다.

SAP INDEX 생성 추가 작업 - 데이타베이스 유틸리티

2. 데이타베이스 유틸리티 화면에서 상단 덱스… 버튼을 클릭합니다.

SAP INDEX 생성 추가 작업 - 인덱스

3. 그럼 작업할 인덱스를 선택하기 위한 리스트 창이 뜨게 됩니다.

4. 작업할 인덱스를 선택하고 계속 또는 마우스 더블클릭 합니다.

SAP INDEX 생성 추가 작업 - 인데스이름 선택

5. 만약 화살 표시 된 데이타베이스인덱스생성 버튼이 활성화 상태라면 클릭해서 인덱스 생성 작업을 진행합니다.

6. 마지막으로 데이타베이스 활성화 및 조정 버튼을 클릭해서 활성화 해주면 됩니다.
   이때 테이블의 사이즈에 따라 활성화 시간이 많이 소요될 수 있습니다. 경우에 따라서는 백그라운드로 실행해야 할 경우도 생깁니다. 이럴 경우 BC 담당자와 상의해 보시길 권합니다.

SAP INDEX 생성 추가 작업 - 데이타베이스 인덱스 생성

※ 새로 만들어진 인덱스가 실제로 원하는 SELECT문에 제대로 사용되는지 ST05에서 추적으로 확인해 보시기 바랍니다.

마무리

이상으로 ABAP 딕션너리에서 테이블 인덱스(Index)를 생성하고 활성화 하는 방법에 대해 알아보았습니다.

테이블에서 자료를 가져올 때 인덱스에 의해 가져올 때와 인덱스에 영향을 받지 않고 가져올 때의 성능 차이는 엄청나게 크게 발생합니다. 접근하는 테이블의 크기가 클 수록 쿼리 문에서 실행 시간은 더욱 큰 차이를 보이게 됩니다.

데이터베이스 관리에 있어 테이블의 인덱스를 무분별하게 생성하는 것도 문제지만, 꼭 필요한 인덱스를 생성해서 활용하는 것도 무척 중요한 요소입니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기