인덱스 (정렬)
- 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성시키는 것
: 빠른 데이터 조회를 위해 목차를 만드는 것
- ROWID
: 데이터가 저장되어 있는 주소
- B-TREE 인덱스
: 데이터의 갯수가 많고 데이터 중복이 적은 경우 사용
: root block (branch 블록의 정보)
: branch block (leaf 블록의 정보)
: leaf block (데이터를 저장하고 있는 데이터 블록들의 주소)
UNIQUE INDEX
- 중복을 허용하지 않는 인덱스
- create unique index 인덱스명 on 테이블이름 (컬럼명);
: 컬럼에 대한 인덱스 생성
NON-UNIQUE INDEX
- 중복을 허용하는 인덱스
- create index 인덱스명 on 테이블명(컬럼명);
Function Based Index (FBI)
- 함수 기반 인덱스
- create index 인덱스명 on 테이블(컬럼+숫자)
: 테이블 내 컬럼들을 가공한 값으로 생성한 인덱스
DESCENDING INDEX
- 내림차순 인덱스
- create index 인덱스명 on 테이블(컬럼 desc);
Composite index
- 결합 인덱스
- create index 인덱스명 on 테이블 (컬럼1, 컬럼2)
BIT MAP INDEX
- 데이터의 갯수가 적고 중복이 많은 경우 사용
- create bitmap index 인덱스명 on 테이블(컬럼)
인덱스의 취약점
- Index Split
: 신규 데이터 삽입으로 기존 index공간에 자리가 없는 경우 블록을 나누어 데이터를 삽입하게 되면서
블록이 나뉘어 지는 현상
- Delete
: 테이블의 데이터가 삭제되어도 index 데이터는 지워지지 않음
: index rebuild 필요
- Update
: update연산을 위해 delete + insert 연산 수행 필요
인덱스 조회
- select table_name, column_name, index_name from user_ind_columns
where table_name='테이블명(대문자)';
인덱스 모니터링
- alter index 인덱스명 monitoring / nomonitoring usage
: 인덱스의 사용여부 확인
index_rebuild
- 잦은 DML 작업으로 인한 인덱스의 밸런싱 상태 저하 해결
- alter index 인덱스명 rebuild;
- analyze index 인덱스명 validate structure;
Invisible index
- 인덱스를 삭제하기 전에 사용안함 상태로 만들어 테스트 할 수 있는 기능
- alter index 인덱스명 invisible / visible;
'Database > MySQL' 카테고리의 다른 글
MariaDB 패키지 / 프로시저 / 함수 / 트리거 / PL/SQL과 SQL/PSM (0) | 2022.05.05 |
---|---|
SQL 프로시저와 패키지에 대한 간단 정리 (0) | 2022.04.28 |
SQL - Constraint (제약조건) (0) | 2020.12.15 |
SQL - DML (Data Manipulation Language) (0) | 2020.12.15 |
SQL - DDL(Data Definition Language)와 Dictionary (0) | 2020.12.15 |