14.2.13.2 클러스터 인덱스와 보조 인덱스
모든 InnoDB
테이블은 행의 데이터가 저장되어있는 클러스터 된 인덱스 라는 특별한 인덱스를 가지고 있습니다. 일반적으로 클러스터 된 인덱스는 기본 키 의 동의어입니다. 쿼리 삽입 및 기타 데이터베이스 작업에서 최적의 성능을 실현하려면 InnoDB가 클러스터 된 인덱스를 사용하여 테이블마다 가장 일반적인 검색 및 DML 작업을 최적화하는 방법을 이해하는 해야합니다.
테이블에서
PRIMARY KEY
를 정의하면InnoDB
는 그것이 클러스터 된 인덱스로 사용됩니다. 작성하는 테이블마다 기본 키를 정의합니다. 논리적으로 고유 Null이 아닌 컬럼 또는 컬럼 세트가 존재하지 않는 경우 자동으로 값이 입력되는 새로운 자동 증가 컬럼을 추가합니다.테이블에
PRIMARY KEY
가 정의되어 있지 않은 경우, MySQL은 모든 키 컬럼이NOT NULL
의UNIQUE
인덱스를 먼저 검색하고InnoDB
는 그것을 클러스터링 된 인덱스로 사용합니다.테이블에
PRIMARY KEY
도 적절한UNIQUE
인덱스도없는 경우에는InnoDB
내부에서 행 ID 값을 포함한 합성 컬럼에 숨겨진 클러스터 된 인덱스가 생성됩니다. 그런 테이블은InnoDB
가 행에 할당 ID에 따라 행의 순서 부가됩니다. 행 ID는 새 행이 삽입되면 단조롭게 증가하는 6 바이트의 필드입니다. 따라서 행 ID로 정렬 된 행이 실제로 삽입 순서입니다.
클러스터 된 인덱스에서 쿼리를 빠르게하는 방법
클러스터 된 인덱스에서 행에 액세스하면 인덱스 검색이 모든 행 데이터가있는 페이지에서 직접 실행되기 때문에 속도가 빨라집니다. 대부분의 경우 테이블의 크기가 큰 경우에 클러스터 된 인덱스 아키텍처를 사용하면 인덱스 레코드와는 다른 페이지에 행 데이터를 저장하는 스토리지 구성에 비해 디스크 I / O 작업을 절약 할 수 합니다. (예를 들어 MyISAM
에서는 데이터 행에 사용되는 파일과 인덱스 레코드에 사용되는 파일은 다릅니다.)
보조 인덱스와 클러스터 된 인덱스와의 관계
클러스터 된 인덱스 이외의 인덱스는 모든 보조 인덱스 라고합니다. InnoDB
는 보조 인덱스의 각 레코드에 행의 기본 키 컬럼 및 보조 인덱스에 지정된 컬럼이 포함됩니다. InnoDB
는 클러스터 된 인덱스에서 행을 검색 할 때이 기본 키 값이 사용됩니다.
기본 키가 길어지면 보조 인덱스에서 사용되는 영역도 많아지기 때문에 기본 키는 짧은 것이 장점이 있습니다.
InnoDB
의 클러스터 인덱스와 보조 인덱스의 장점을 얻기위한 코딩 지침은 섹션 8.3.2 "기본 키 사용" , 섹션 8.3 "최적화와 인덱스" , 섹션 8.5 "InnoDB 테이블의 최적화」 , 섹션 8.3.2 "기본 키 사용" 을 참조하십시오.