PRIMARY KEY, UNIQUE, INDEX, and FULLTEXTWhere cluase(col1, col2, col3) 다중 인덱스를 생성하면 col1), (col1, col2), and (col1, col2, col3) 개의 인덱스를 사용할 수 있다.주소에서
도시명 vs 행정동
서울시 광진구 성수동을 찾을 때
서울시 검색결과 1000개 내에서 1개찾냐
성수동 검색결과 10개 내에서 찾냐스캔 : 차례대로 읽는 것
이진 탐색트리의 경우 한쪽으로 쏠리게되면 최악의 경우 O(n)의 시간복잡도가 걸린다.
B-Tree 는 항상 양쪽 균형있는 트리를 유지하면서 O(logN) 을 보장한다.B-Tree 의 구조는 Root Node, 브랜치 노드, leaf Node 로 구성된다.
루트 노드 : 트리의 시작이 되는 노드
브랜치 노드 : 루트 노드와 리프 노드 사이의 모든 노드
리프 노드 : 트리의 맨 마지막 층 노드로 레코드의 주소값을 가지고 있다.

리프 노드의 데이터 페이지가 실제 레코드인 경우를 clustered 인덱스
리프 노드의 데이터 페이지가 레코드의 주소인 경우는 Nonclustered 인덱스라 한다.
- MyISAM은 물리적 주소를 저장한다
- InnoDB는 pk 로 논리적 주소를 갖는다.
위에서 인덱스는 항상 정렬된 상태를 유지한다고 했다.
💡 InnoDB 에서는 기본적으로 테이블의 레코드는 프라이머리 키 순서대로 저장된다.