반응형

     

    Index는 테이블의 읽기 속도를 빠르게 하기 위한 요약 테이블을 가지고 있는 것과 같습니다. 하지만 읽기 이외의 작업

    Insert, Update, Delete 시에는 속도가 느려지겠죠. 두개의 테이블을 모두 변경하니... BC 쪽에서 마음대로 만들지 못하게 하겠지만 속도를 높인다고 많이 만드는 것은 좋지 않습니다.

     

    SE11 or SE80에서 테이블을 조회하고 위의 Indexes... 버튼을 누릅니다. 

    Index 조회 화면에서 상단 툴바 중 Create Index를 선택하고 인텍스명을 넣고 확인을 누릅니다.

    Index 생성화면에는 몇가지 옵션이 보이는데 살펴보고 가겠습니다.

    Non-Unique index

    : 일반적으로 사용하는 index로 여러 필드의 중복 값을 허용합니다.

     

    Index on all databse systems : DB서버가 여러 대 일때 모든 서버에 index를 만든다는 선택입니다.

    For selected database systems : DB서버가 여러 대 선택한 서버에만 index를 만든다는 선택입니다.

    No database index : Index생성 화면에서는 조회되지 않으나 DBMS에 존재하는 index가 있으면 지울 때 사용합니다. 

     

    Unique index

    : index하려는 필드의 값이 중복되는 값이 없을 때 사용합니다. 마치 Key필드들이 Unique 한 조합을 가지는 것과 같습니다. 만약 이렇게 구성된 필드에 중복 값을 넣으려 하면 에러가 발생합니다. 

    또한 Key 필드들의 경우는 자동으로 Unique Index가 생성되어 있으니 중복생성하지 않아도 됩니다.

     

    Table에 값을 Insert 하는데 Duplicate Key에러가 나면서 Dump가 날때가 있습니다. 데이터를 다 살펴봐도 문제가 없다면 이 Unique index에 중복이 들어가는지도 봐야합니다. 데이타 저장시와 같은 Duplicate Dump를 내기 때문에 데이타 문제로 오인하고 한참을 헤매기도 합니다.

     

    이렇게 만들고 나면 SAP상에는 index생성 정보가 있지만 DBMS에 index data가 생성되지 않은 상태입니다.

    SE14 tcode에서 index를 활성화 해줘야 정상적으로 사용이 가능합니다.

     

    SE14를 실행하고 테이블 명을 넣습니다.

    상단의 Indexes... 버튼을 눌러 Index를 더블클릭으로 선택합니다.

    index를 확인하고 Activate and adjust database 버튼을 누릅니다. 데이터 건수에 따라 오래 걸릴 수도 있으니 기다려야 합니다. 데이터양이 많다면 Background를 선택하고 작업하는 것도 좋은 방법입니다.

     

    참고로 여기서 0번은 Key필드로 자동생성된 Unique index를 말합니다.

    SE14는 Table의 키가 변경이되었을때, Index 재생성이 필요할 때 모두 사용이 가능합니다만, BC에게 문의하여 조심히 쓰는 것이 좋겠습니다.

     

    Table Key 변경의 경우에는 index 선택화면 들어오지 말고 Table조회 화면에서 Activate and adjust database버튼을 누르면 됩니다. 

     

    SE14는 SE80의 Utilities -> Database Objrct -> Database Uitlity에서도 실행 가능합니다.

     

    이상 Table의 Index에 관하여 알아보았습니다. 실제로 index가 Select문에서 제대로 사용되는지 ST05를 이용해 추적이 가능합니다. ABAP 튜닝 강좌에서 한번 다뤄보겠습니다.

     

    긴 글 읽어주셔서 감사합니다.

    728x90
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기