제 5 장 MariaDB인덱스 생성 및 관리
MariaDB 인덱스 클러스터링 인덱스 보조 키 인덱스 클러스터링 인덱스 선택 기준 테이블이 기본 키에 의해 정렬되고, 그 기본 키에 대해 만들어진 인덱스 기본키 (또는 NOT NULL의 UNQUE 키) 선언할 때 자동 생성 보조 키 인덱스 기본키를 제외한 나머지 모든 인덱스 create index 문장에 의해 생성됨 UNIQUE 키, 외래 키 선언할 때 자동 생성 클러스터링 인덱스 선택 기준 기본키가 있으면 이를 클러스터링 키로 선택 NOT NULL 옵션의 첫번째 UNIQUE 키를 선택 자동으로 증가되는 컬럼을 내부적으로 추가한 후 선택
MariaDB 인덱스 인덱스 생성 예제 create table userTbl ( userID char(8) PRIMARY KEY, name varchar(10) UNIQUE, birthYear int, … INDEX ix_nickname(nick_name) ); create index ix_age on userTbl(age); show index from userTbl; drop index ix_age on userTbl;
MariaDB 인덱스 저장구조 (InnoDB) 클러스터링 인덱스 저장 구조
MariaDB 인덱스 저장구조 (InnoDB) 보조 인덱스 저장 구조
MariaDB 인덱스 저장구조 인덱스 저장 구조/방식 분류 B-tree 인덱스 해시 인덱스 R-tree 인덱스 Fractal-Tree 인덱스 전문 검색(Full-Text search) 인덱스 비트맵 인덱스 함수 기반 인덱스
MariaDB 인덱스-클러스터링 인덱스 클러스터링 인덱스의 장점 클러스터링 인덱스의 단점 기본 키를 조건으로 검색할 때 처리 성능이 매우 빠름 인덱스만으로 질의 처리하는 것이 가능함 클러스터링 인덱스의 단점 모든 보조 인덱스가 클러스터 키를 갖기 때문에 클러스터 키 값이 클 경우 인덱스의 크기가 커짐 보조 인덱스를 이용한 검색시 기본키로 한번 더 검색 발생 INSERT시 기본 키에 의해 레코드의 저장 위치가 결정되기 때문에 처리 성능이 느림 기본 키를 변경할 때 레코드를 삭제한 후 삽입해야 하므로 처리 성능이 느림
Speed-start Web services 2004 - SOAs and Web services ▪ 보조 인덱스 생성/제거 인덱스 생성 CREATE [UNIQUE] INDEX [schema.] index_name ON [schema.] table_name (col1, [col2, col3 …]); create index emp_idx on emp(ename, dno); 인덱스 제거 DROP INDEX [schema.] index_name; drop index emp_idx; ibm.com/developerWorks/webservices - © Copyright 2004 IBM Corporation.
인덱스 관리 인덱스 생성시 고려 사항 인덱스는 열 단위에 생성된다 Where 절에서 자주 사용되는 열을 인덱스로 만든다 데이터의 중복도가 높은 열은 인덱스를 만들어도 별 효과가 없다 외래 키가 사용되는 열에는 인덱스를 생성하는 것이 좋다 Join에 자주 사용되는 열에는 인덱스를 생성하는 것이 좋다 INSERT, DELETE, UPDATE가 얼마나 자주 일어나는지 고려해야 한다 클러스터링 인덱스는 하나만 생성할 수 있다 사용하지 않는 인덱스는 제거하라 계산 열에도 인덱스를 활용할 수 있다