키보드워리어

[데이터베이스] 인덱스란? 본문

개발 관련/Database

[데이터베이스] 인덱스란?

꽉 쥔 주먹속에 안경닦이 2023. 7. 31. 10:26
728x90

인덱스
인덱스

안녕하세요 블로그 방문자 여러분, 반갑습니다.

오늘은 DB - INDEX 인덱스에 대해 살펴봅니다.


1. 인덱스란?

인덱스는 정처기 3과목에서 다뤘던 내용이라 친숙하다.

테이블에 붙여진 색인이라 할 수 있고 쉽게 찾아볼 수 있도록 일정한 순서에 따라 놓은 목록이다.
이전에 인덱스와 관련된 유튜브 영상을 본 적이 있는데 정말 깔끔하게 정리를 해주셨다.
관련영상

우아한 테크 영상은 진짜 없는 게 없는 거 같다..

2. 검색에 사용하는 알고리즘

대표적인 검색 알고리즘 풀테이블 스캔, 이진탐색 (이진트리), 해시 사용합니다.

풀테이블 스캔 사용

  • 적용 가능한 인덱스 없는 경우
  • 인덱스 처리 범위가 넗거나 크기가 작은 테이블 액세스하는 경우

이진검색 알고리즘 (대량 데이터)

사용 방법 인덱스가 적용된 대상을 where절을 통해 검색할 때와 그렇지 않을 때 검색결과 차이는 확연히 난다.

  • TIP 데이터베이스 테이블에 대한 검색 성능을 향상하는 자료 구조이며 where절을 통해 활용된다.
  • 탐색효율이 증가
  • ⭐검색할 데이터가 정렬되어 있어야한다. -> 선형 검색은 정렬되지 않아도 된다.
  • 비교 횟수를 거듭하며 대상이 절반으로 준다.

이진트리

이진 탐색은 고속으로 검색할 수 있는 방법이지만 데이터가 미리 정렬되어 있어야 한다.
하지만 테이블 내의 행을 언제나 정렬된 상태로 두는 것은 힘든 작업입니다.

일반적으로 테이블에 인덱스를 작성하면 테이블 데이터와 별개로 인덱스용 데이터가 저장장치에 만들어집니다.

이때 이진트리라는 데이터 구조로 작성됩니다. (루트 노드, 자식노드, 단말노드를 갖는 모양)

  • TIP) 이진 트리에는 중복하는 값을 등록할 수 없는 유일성을 갖는다.

인덱스는 작성과 삭제

인덱스는 Create/Drop INDEX 명령어로 생성/삭제합니다.


특징 정리

  • 인덱스는 항상 최신의 정렬상태를 유지
  • 인덱스도 하나의 데이터베이스 객체
  • 데이터베이스 크기의 10% 정도의 저장공간 필요

참고하시면 좋은 글

2023.07.27 - [개발 관련/Database] - [databases]데이터의 일관성을 지키기 위한 로킹(locking)

 

[databases]데이터의 일관성을 지키기 위한 로킹(locking)

안녕하세요 블로그 방문자 여러분, 반갑습니다. 오늘은 로킹에 대해 배워볼게요 제가 지난번 동시성 제어문제에 대해 글을 작성한 게 있었는데 이 내용의 2부라고 보셔도 좋을 거 같아요! 2023.06.

keyboardwarrior.tistory.com

2023.07.30 - [개발 관련/Database] - [databases] 서브쿼리

 

[databases] 서브쿼리

안녕하세요 블로그 방문자 여러분, 반갑습니다. 오늘은 databases - 서브쿼리를 포스팅하려고 합니다. 서브 쿼리 서브쿼리란? Select 명령에 의한 데이터 질의로, 상부가 아닌 하부의 부수적인 질의

keyboardwarrior.tistory.com

 

이상 부족한 컨텐츠 읽어주셔서 감사드립니다.

내용 피드백이 있는 경우 댓글 부탁드립니다!

다음 포스팅 때 뵙겠습니다! 감사합니다 🤗

728x90