ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • index (인덱스)란?
    일차 TIL 2023. 5. 23. 22:47

    1. Index란?

    추가적인 쓰기 작업공간을 활용 하여 데이터 베이스 테이블의 검색 속도를 향상 시키기 위한 자료 구조

     

    만약 우리가 책에서 원하는 내용을 찾고싶다면, 책을 전부 처음부터 전부 읽진 않을 것이다.

    보통 맨 앞쪽에 색인(index)를 보고 찾아 갈 것이다. 

     

    인덱스를 황용하면, 데이터를 조회하는 SELECT 외에 UPDATE나 DELETE의 성능이 함께 향상된다.

    해당연산을 수행하려면 대상을 조회해야만 작업을 할 수 있는데,

    index를 사용 하지 않을 컬럼을 조회해야하는 상황이라면 전체를 탐색하는 Full Scan을 수행해야한다.

    ex)

    name age gender from
    "car" 47 "male" "Korea"
    "von" 31 "male" "USA"
    "linne" 38 "female" "Sweden"
    ~ ~ ~ ~

    이러한 값의 데이터가 에서 SELECT * WHERE age =31

    을 구한다면 하나 씩 비교를 하며 값을 찾을 것이다.

    행이 많다면 그만큼 더 많은 시간이 소모 될 것이다.

     

    ex ) age 가 10 ~ 90 까지 있다면 하나씩 비교 가아닌

    age < 50 이것이 맞다면 age > 25 이런 소거법을 사용한다면 훨씬 빠르게 답을 도출해 낼 수 있다.

    이렇게 하기위해선 일단 age 가 정렬이 되어있어야 하는데

     

    age
    31
    38
    47

    컬럼을 복사한뒤 정렬을 한것. 

    이것이 index 이다.

     

    2. 추가로 알아 본것

    데이터 베이스에서 의 index

    4 5 1 3 2

     

    1 2 3 4 5

    이런 식의 물리적 이동은 좋지 않음 

    Binary Search Tree

    tree 형식으로 연결만 시켜 놓는다.

    Binary Search Tree 라고 부른다

     

    숫자가 있는 박스를 node 라고 부르는 데

    node에 데이터를 하나만 넣는 것이 아닌 여러개를 넣는 다면

    B-tree

    성능을 더욱 강화 시킬 수있다.

     

    여기서 끝이 아니다.

    알아보던중 tree의 최종 판이라고 할 수있는 형태가 있던 것이다.

    더욱 성능이 강화 된 것이다.

    B+Tree

    맨 아래의 node 끼리 연결이 되어 있다.

    그로 인해 범위 검색이 쉬워진다. ex(3~ 8까지)

     

    3. 정리

    index 가없는 경우 모든 행을 다 뒤짐

     

    index 가 있는 경우

    1. index 에서 원하는 값을 빠르게 찾을 수있음

    2. index와 연결된 원래 테이블 행을 가져옴

    3. index 관리를 위해 추가 저장공간이 필요하다.

     

    4. 느낀점

    데이터 베이스끼리 병렬적으로 연결을 성공 시킬 수 있다면 더 성능이 좋고 빠른 데이터 베이스를 만들 수 있지 않을까? 라는 생각을 해보았다.

    정확히 더 찾아 보진 못했지만 db의 종류중 NoSQL이 내가 생각 한 방식과 비슷한 것 같아 보였다.

    다음번에 재대로 확인을 해봐야겠다.

     

    참고 : https://mangkyu.tistory.com/96

    '일차 TIL' 카테고리의 다른 글

    [자바스크립트]Boolean 의 필요성  (2) 2023.05.28
    논리 연산자 ||  (0) 2023.05.26
    23-05-15 ~ 23-05-19 프로젝트 KPTF  (0) 2023.05.19
    CRUD란?  (0) 2023.05.19
    html 간 페이지 이동  (0) 2023.05.17
Designed by Tistory.