Search
Duplicate

인덱스

순서
1
날짜
2023/08/23
사람
상태
Done
오늘은 유트브를 보다가, 쉬운코드라는 채널을 알게되었다.
개발에 대해서 알려주는 채널인데, 내용을 듣다보니 기본이 되는 지식을 일목요연하게 잘 정리 해주어서 작성하려고 한다.
B트리 기반 인덱스 동작방식
아래의 표처럼 일반의 Member데이터가 쌓여있다고 가정하자.
옆에 표를 인덱스로 생성하게 되면 아래와 같은 표가 생성된다.
Member
B-tree based Index
a
b
c
2
7
1
2
9
7
13
5
7
2
a
ptr
1
2
2
3
5
7
7
7
9
13
B-tree based Index를 보면 우측에 Pointer란 값이 존재하며, 이 값을 통해서 Member의 튜플의 값을 참조 할 수 있게된다.
1.
select * from Member where a = 9;를 실행시키게 되면, B-tree Based Index를 바이너리 서치를 통해서 찾게 된다.
2.
B-tree구조에서 바이너리 서치를 통해서 일치하는 a의 값을 찾으면 ptr을 통해서 원본 데이터의 값을 추출하는 것이다.
그렇다면 이러한 인덱스를 막 만들어도 괜찮을까?
table write할 때마다 index도 계속 변경해야된다. 따라서 write를 할때 마다 오버헤드가 발생
추가적인 저장공간이 필요하다. index마다 각각의 저장공간을 차지한다.
인덱스의 장점
빠른 검색: 인덱스를 사용하면 데이터베이스 엔진은 빠르게 원하는 데이터를 찾을 수 있다.
정렬과 필터링: 인덱스를 활용하여 데이터를 정렬하거나 특정 조건으로 필터링할 수 있다.
조인 성능 향상: 조인 연산을 수행할 때 인덱스를 사용하면 성능이 향상될 수 있다
인덱스의 단점
저장 공간 소모: 인덱스를 생성하면 추가적인 저장 공간이 필요하며, 여러 인덱스를 생성할 경우 데이터베이스 크기가 커질 수 있.
업데이트 및 삽입 비용: 데이터를 업데이트하거나 새로운 데이터를 삽입할 때 인덱스를 업데이트하는 추가적인 작업이 필요하다.