PRIMARY KEY
, UNIQUE
, INDEX
, and FULLTEXT
Where
cluase(col1, col2, col3)
다중 인덱스를 생성하면 col1)
, (col1, col2)
, and (col1, col2, col3)
개의 인덱스를 사용할 수 있다.주소에서
도시명 vs 행정동
서울시 광진구 성수동을 찾을 때
서울시 검색결과 1000개 내에서 1개찾냐
성수동 검색결과 10개 내에서 찾냐
스캔 : 차례대로 읽는 것
B-Tree 의 구조는 Root Node, 브랜치 노드, leaf Node 로 구성된다.
루트 노드 : 트리의 시작이 되는 노드
브랜치 노드 : 루트 노드와 리프 노드 사이의 모든 노드
리프 노드 : 트리의 맨 마지막 층 노드로 레코드의 주소값을 가지고 있다.
리프 노드의 데이터 페이지가 실제 레코드인 경우를 clustered 인덱스
리프 노드의 데이터 페이지가 레코드의 주소인 경우는 Nonclustered 인덱스라 한다.
- MyISAM은 물리적 주소를 저장한다
- InnoDB는 pk 로 논리적 주소를 갖는다.
위에서 인덱스는 항상 정렬된 상태를 유지한다고 했다.
💡 InnoDB 에서는 기본적으로 테이블의 레코드는 프라이머리 키 순서대로 저장된다.