
지금까지 사용한 내부 테이블에는 스칼라 데이터 유형이 행 유형으로 사용되었습니다. 이 그림의 예에서 내부 테이블(Internal Table) 번호의 행 유형은 ABAP 기본 제공 유형 I입니다.
이러한 종류의 내부 테이블을 단순 내부 테이블(Internal Table)이라고 합니다.

행 유형이 구조화 데이터 유형인 경우 복합 내부 테이블(Internal Table)을 사용합니다.
단순 내부 테이블에는 이름 없는 열이 하나만 있는 반면, 복잡한 내부 테이블은 각각 구조화된 행 유형의 해당 컴포넌트 이름과 유형을 가진 여러 열로 구성됩니다. 이 예에서 내부 테이블(Internal Table connections)의 행 유형은 다섯 가지 컴포넌트(carrier_id,, connection_id, airport_to_id, airport_from_id, carrier_name)의 구조화된 유형입니다. 따라서 내부 테이블 connections 해당 이름을 가진 5개의 열이 있습니다.
노트

지금까지 내부 테이블(Internal Table)의 행을 위치별로 처리했습니다. 이를 인덱스 액세스라고 합니다.
복합 내부 테이블의 명명된 열을 사용하면 키 액세스가 더 중요해집니다. 키 액세스는 특정 열의 특정 값을 찾아 내부 테이블의 행을 처리하는 것을 의미합니다. 검색하는 열은 내부 테이블(Internal Table)의 모든 열이 될 수 있습니다.
내부 테이블에 행이 많더라도 내부 테이블에 대한 인덱스 액세스는 항상 매우 빠릅니다. 그러나 테이블에 행이 많으면 키 액세스가 매우 느려질 수 있습니다. 내부 테이블에 적합한 액세스 유형을 선택하면 키 액세스 성능이 향상될 수 있습니다.

모든 테이블의 액세스 유형은 세 가지 중 하나입니다. 액세스 유형은 데이터가 테이블에 저장되는 방식을 결정하고, 이를 기반으로 시스템에서 데이터를 검색하기 위해 테이블을 읽는 방법을 결정합니다.
각 테이블 유형은 다음과 같습니다.
- 표준 테이블
- 표준 테이블에서는 내용이 특정 정렬 순서대로 저장되지 않습니다. 기본적으로 신규 레코드는 테이블 끝 부분에 추가됩니다. 키별로 데이터를 검색하려면 시스템에서 순차적으로 읽어야 하므로 테이블이 매우 크면 검색 시간이 길어질 수 있습니다. 지금까지 사용한 단순 내부 테이블은 표준 테이블이었습니다.
- 정렬 테이블
- 정렬 테이블에서는 테이블 내용이 항상 키 필드에 따라 오름차순으로 정렬됩니다. 테이블에 신규 레코드를 삽입하면 시스템에서 해당 레코드가 올바른 위치에 배치되었는지 확인합니다. 데이터가 항상 정렬되므로 특정 규칙을 따르기만 하면 표준 테이블에 비해 더 효율적으로 레코드를 검색할 수 있습니다.
- 해시 테이블
- 해시 테이블은 특정 해시 알고리즘을 사용하여 관리됩니다. 이를 통해 매우 큰 테이블에서도 매우 빠르게 레코드를 검색할 수 있습니다. 그러나 이러한 성능상의 이점은 매우 특별한 경우에만 해당됩니다.

모든 내부 테이블에는 키가 있습니다. 표준 테이블에서는 키가 특별히 중요하게 사용되지 않습니다. 정렬 테이블과 해시 테이블에서는 키를 통해 테이블의 데이터를 관리하는 방법이 결정되므로 키가 매우 중요합니다. 중요한 점은 키 액세스에서 키 필드의 전체 또는 최소 하위 세트를 처리하는 정렬 테이블과 해시 테이블만 더 빠릅니다.
테이블 키의 또 다른 특성은 고유성입니다. 필요에 따라 내부 테이블의 엔트리 복제를 허용해야 할 수도 있고, 키가 고유한지 확인해야 할 수도 있습니다. 이러한 경우 다음 규칙이 적용됩니다.
- 표준 테이블에서 항상 중복이 허용됩니다.
- 해시 테이블에는 중복이 허용되지 않습니다.
- 정렬 테이블의 경우 정의에서 키가 고유한지 아니면 비고유한지를 선택합니다.
노트
