중화사전망 - 자전 검색 - InnoDB 기본 키 인덱스 및 보조 인덱스 구조
InnoDB 기본 키 인덱스 및 보조 인덱스 구조
InnoDB 엔진 인덱스 구조의 리프 노드에 대한 데이터 필드는 실제 데이터 레코드를 저장합니다. 기본 인덱스의 경우 테이블의 모든 데이터 레코드가 여기에 저장됩니다. 보조 인덱스의 경우 기본 키를 참조하며, 검색 시 기본 키 인덱스에서 해당 데이터 행을 찾을 수 있습니다.) 또는 InnoDB 자체의 데이터 파일이 기본 키 인덱스 파일입니다. 이러한 인덱스를 클러스터된 인덱스라고 하며 테이블에는 클러스터된 인덱스가 하나만 있을 수 있습니다.
기본 키 인덱스:
InnoDB 인덱스는 클러스터된 인덱스이며 해당 인덱스와 데이터가 같은 곳에 저장된다는 것을 알고 있습니다. Idb 파일이므로 인덱스 구조는 인덱스와 데이터를 모두 동일한 트리 노드에 저장하는 것입니다.
Innodb 에서 인덱스는 리프 노드와 비리프 노드로 구분됩니다. 리프가 아닌 노드는 신화 사전의 카탈로그처럼 인덱스 세그먼트에 별도로 저장되고 리프 노드는 데이터 세그먼트에 순차적으로 정렬됩니다. Innodb 의 데이터 파일은 innodb_file_per_table 을 열어 테이블에 따라 세그먼트화할 수 있으며 세그먼트화된 후 xxx.ibd 에 저장됩니다. 기본적으로 세그먼트화되지 않고 xxx.ibdata 에 저장됩니다.
보조 (기본 키가 아닌) 인덱스:
이번에는 예제 중학생 테이블에서 이름 열을 사용하여 보조 인덱스를 만들었습니다. 인덱스 구조는 기본 키 인덱스와 매우 다릅니다. 맨 아래 리프 노드에는 두 줄의 데이터가 있습니다. 첫 번째 행의 문자열은 ASCII 코드별로 정렬된 보조 인덱스이고 두 번째 행의 정수는 기본 키의 값입니다.
즉, 이름 열에 대한 조건 검색에는 두 단계가 필요합니다.
(1) 보조 인덱스에서 이름을 검색하고 해당 리프 노드에 도달하여 해당 기본 키를 얻습니다.
② 기본 키를 사용하여 기본 인덱스를 적절하게 검색합니다.
이것은 소위 "테이블 쿼리" 입니다.