728x90
INDEX
인덱스란 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것.
예를 들어 책 뒷편에 '색인'이 인덱스의 역할과 동일하다.
insert, update, delete의 성능을 희생하고 대신 select(Query)의 성능을 향상시킨다.
단 update, delete의 성능이 느리지만, 인덱스가 있으면 update, delete를 하기 위해 데이터를 조회하는것은 빠르다.
INDEX 장단점
INDEX 장점
- 검색 속도가 빨라질 수 있다. (모든 상황은 아니다.)
- 쿼리의 부하가 줄어들어 시스템 전체의 성능이 향상 된다.
INDEX 단점
- INDEX가 데이터베이스 공간을 차지. 약 10%정도의 추가 공간이 필요.
- 첫 인덱스 생성시 시간이 많이 소요될 수 있다.
- 데이터 변경 작업이 자주 일어날 경우 오히려 성능이 저하 될 수 있다.
효율적인 INDEX
- WHERE 절에 자주 등장하는 컬럼을 인덱스로 설정
- ORDER BY 절에 자주 등장하는 컬럼을 인덱스로 설정
- SELECT 절에 자주 등장하는 컬럼들을 잘 조합해서 인덱스로 설정
- JOIN이 자주 사용되는 열에 인덱스를 생성하는 것이 좋다.
데이터 중복도
- 중복도가 낮다 - 분포도가 높다 - Cardinality가 높다 - 나타나는 데이터의 종류가 많다.
- 중복도가 높다 - 분포도가 낮다 - Cardinality가 낮다 - 나타나는 데이터의 종류가 적다.
INDEX 사용시 주의점
- INDEX를 막 생성하면 SELECT는 빨라지지만 INSERT, UPDATE는 느려진다.
- WHERE절에 사용되어야 INDEX를 주로 사용한다.
- INDEX를 자주 사용하지 않으면 성능 저하를 초래할 수 있다.
- INDEX의 데이터 중복도가 높으면 성능 저하를 초래할 수 있다.
- JOIN절에 자주 사용되는 열에는 INDEX의 효율이 좋다.
- 사용하지 않는 INDEX는 제거하는 것이 효율적이다.
728x90
'DataBase' 카테고리의 다른 글
[DataBase] RDBMS, NoSQL 차이점 (0) | 2022.04.05 |
---|---|
[MySQL] Transaction 트랜잭션 정리 (0) | 2022.04.04 |
[MySQL] NOT LIKE (0) | 2022.02.14 |
[MySQL] 한글 깨짐 현상 해결 방법 (0) | 2022.02.13 |
[MySQL] EXISTS, NOT EXISTS 사용법 (0) | 2022.02.04 |