MySQL 인덱스의 기본 구현 원리
관련 무료 학습 권장 사항: mysql 비디오 튜토리얼
1. 소개
MySQL은 많은 스토리지 엔진을 지원하며, 다양한 스토리지 엔진은 인덱스에 대해 서로 다른 지원을 제공합니다. 따라서 MySQL 데이터베이스는 BTree 인덱스 및 B+Tree 인덱스와 같은 여러 인덱스 유형을 지원합니다. , 해시 인덱스, 전체 텍스트 인덱스 등
2. 인덱스 종류
1. 해시 인덱스
해시 인덱스는 메모리(메모리) 저장 엔진에서만 지원하며, 해시 인덱스는 인덱스 열의 값을 참조하여 해당 값의 해시 코드를 계산합니다. 값이 있는 행 데이터의 물리적 위치는 해시 알고리즘을 사용하므로 매우 빠릅니다. 그러나 값은 하나의 hashCode에만 대응할 수 있으므로 해시 분산됩니다. 해시 인덱스는 범위 검색 및 정렬 기능을 지원하지 않습니다.
2. BTree 인덱스와 B+Tree 인덱스
BTree 인덱스는 트리의 깊이가 2d(d> 1)인 경우 균형 검색입니다. 높이가 h이면 BTree는 다음 조건을 충족해야 합니다.
① 각 리프 노드의 높이는 h와 동일해야 합니다.
② 각 리프 노드는 n-1 키와 n 포인터로 구성됩니다. 여기서 d ③리프 노드 포인터는 모두 null입니다.
④리프가 아닌 노드의 키는 모두 [key, data] 튜플입니다. , 여기서 key는 인덱스를 나타내며, data는 키 값이 있는 행의 데이터입니다.
B+Tree는 BTree의 변형입니다. d가 트리의 차수이고 h가 숫자의 높이인 경우 B+Tree와 BTree의 주요 차이점은 다음과 같습니다.
① B+Tree Leaf 노드의 숫자가 아닌 노드는 데이터를 저장하지 않고 키 값만 저장합니다.
②B+Tree의 리프 노드에는 포인터가 없으며 모든 키 값은 리프 노드에 표시되며 키 값은 저장됩니다. 키는 데이터 데이터의 물리적 주소에 해당합니다.
③B+ 트리의 각 리프가 아닌 노드는 n개의 키 값과 n개의 포인터로 구성됩니다.
① 디스크 읽기 및 쓰기 비용이 저렴합니다.
② 쿼리 속도가 더 안정적입니다.
3. 전체 텍스트 인덱스
FullText(전체 텍스트) 인덱스는 MyISAM 및 InnoDB에만 사용할 수 있습니다. 더 큰 데이터의 경우 전체 텍스트 인덱스를 생성하는 데 시간과 공간이 많이 소요됩니다.
FullText 인덱스를 생성할 때 텍스트에 대한 단어 목록이 생성되며, 인덱스는 인덱싱 중에 이 단어 목록을 기반으로 합니다.
관련 무료 학습 권장 사항: mysql 데이터베이스(동영상)
위 내용은 MySQL 인덱스의 기본 구현 원칙에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!