기본적으로 인덱스란 무엇인가에 대한 개념을 잡고오면 도움이 됩니다.
https://steady-snb.tistory.com/7
인덱스를 잘 사용하면 조회 성능이 보다 빠르지만 잘 못 사용하면 오히려 처음보다 느려지는 역효과를 야기할 수 있습니다.
그렇다면 인덱스는 어떻게 돌아가는 원리이며 무슨 조건으로 사용해야 보다 효율적으로 사용할 수 있는가 알아봅시다.
인덱스가 돌아가는 구조
기본적으로 데이터베이스에서 인덱스라 하면 B-트리 구조가 일반적입니다.
B-트리라 하면 이진트리와는 다르게 한 노드에 N개의 자식을 가질 수 있는 자료구조입니다.
B-트리의 특징
1. 모든 리프노드들은 같은 레벨에 있으며 각 데이터와 매칭되는 포인터를 가지고 있습니다.
2. 차수라는것은 한 노드가 가질 수 있는 최대 자식 수를 의미합니다.
3. 부모 노드로 부터 자식노드의 왼쪽은 작은 수 오른쪽은 같거나 큰 수만 들어갈 수 있습니다.
4. 노드는 삽입,삭제에 따라 분할 또는 인접 노드와 병합이 가능합니다.
쿼리 실행 시 걸리는 시간 체크
explain함수를 통해 쿼리 실행 속도를 체크할 수 있습니다.
ex)
EXPLAIN
SELECT *
FROM TABLE
WHERE COLUMN = '000';
인덱스를 효율적으로 거는 조건
1. 조건 중 == 이나 equal로 비교하는 컬럼이 있으면 가장 먼저 인덱스로 설정하는게 좋습니다.
2. order by 등 과 같은 정렬에 들어가는 필드가 있다면 그 다음 인덱스로 설정하는게 좋습니다.
3. 다중 값 출력 in이나 '<', '>', between 등 과 같은 많은 값을 출력해야 할 경우 다음 인덱스로 설정하는게 좋습니다.
4. 마지막으로 유니크한 값을 정도가 높은 순서대로 설정하면 좋습니다.
예를들어, 생일과 주민번호 둘 중 하나의 인덱스를 걸어야 한다면 생일은 겹칠 가능성이 있지만 주민번호는 생일보다
더 유니크하기에 주민번호로 인덱스를 걸어주는게 더 효율적입니다.
인프런 CS지식의 정석 중..
'IT지식 > Computer Science' 카테고리의 다른 글
디자인패턴을 쓰는 이유 (1) | 2025.02.06 |
---|---|
CPU 스케줄링 알고리즘 선점형, 비선점형 (1) | 2025.01.30 |
프로세스 교착상태의 원인과 해결방법 (0) | 2025.01.30 |
운영체제에서 자원의 접근 방식, 공유자원과 임계영역 (0) | 2025.01.30 |
프로세스와 스레드의 차이 (0) | 2025.01.30 |