DB Index

2024. 10. 8. 13:16· CS지식
목차
  1. Index 만들기
  2. B-tree 기반 Index 동작 방식
  3. INDEX는 막 만들어도 괜찮을까?
  4. Covering index
  5. Hash index
728x90

Index를 쓰는 이유: 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해, 정렬, 그룹핑 하기 위해

 

Index 만들기

CREATE INDEX player_name_idx ON player(name);
CREATE UNIQUE INDEX team_id_backnumber_idx ON player(team_id, backnumber);
// multicolumn index, composite index
SHOW INDEX FROM player;

 

B-tree 기반 Index 동작 방식

index로 지정한 것 기준으로 Tree 구조로 만들어짐

EXPLAIN SELECT*FROM player WHERE backnumber = 7;
// 어떤 키를 사용하는 지 알 수 있음

 

직접 INDEX 고르기

SELECT * FROM player USE INDEX(backnumber_idx) where backnumber = 7;
SELECT * FROM player FORCE INDEX(backnumber_idx) where backnumber = 7; // 더 강하게
IGNORE INDEX도 사용 가능

 

INDEX는 막 만들어도 괜찮을까?

index 생성 시 추가 데이터 공간 발생, 오버헤드 만들어 질 가능성이 있음, table에 write 할 때마다 index도 변경 발생

 

Covering index

SELECT team_id, backnumber FROM player WHERE team_id = 5;

index 만으로 조회하는 attribute를 index 모두 cover 할 때 조회 성능이 더 빨라짐

 

Hash index

hash table을 사용해서 index 구현

시간 복잡도 O(1) 성능

rehashing에 대한 부담(데이터 사이즈를 늘려주는 것)

equality 비교만 가능, range 비교 불가능

multicolumn index의 경우 전체 attributes에 대한 조회만 가능

 

Full Scan이 더 좋은 경우

table에 데이터가 조금 있을 때

조회하려는 데이터가 테이블의 상당 부분을 차지할 때(SELECT*FROM customer WHERE mobile_carrier = 'SK')

 

 

저작자표시 비영리 (새창열림)

'CS지식' 카테고리의 다른 글

스피링 부트 내장 톰캣  (0) 2024.10.17
락  (2) 2024.10.10
InnoDB  (0) 2024.10.10
Nginx vs APACHE  (1) 2024.10.08
Cache & Redis  (0) 2024.10.07
  1. Index 만들기
  2. B-tree 기반 Index 동작 방식
  3. INDEX는 막 만들어도 괜찮을까?
  4. Covering index
  5. Hash index
'CS지식' 카테고리의 다른 글
  • 락
  • InnoDB
  • Nginx vs APACHE
  • Cache & Redis
두잇 두두
두잇 두두
읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두두 DB읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두잇 두두
두두 DB
두잇 두두
전체
오늘
어제
  • 분류 전체보기 (135)
    • CS지식 (7)
    • 시스템 설계 (5)
    • 자료구조&알고리즘 (36)
      • 자료구조 (1)
      • 백준 (13)
      • 프로그래머스 (15)
      • 인프런 (2)
    • Python (9)
      • Docs (3)
      • 실험실 (2)
    • Django (36)
      • orm (10)
      • view (3)
      • model (3)
      • admin (3)
      • restframework (13)
      • error (1)
      • utils (2)
    • Java (2)
      • JPA (3)
    • AI (1)
      • AI가 쓴 글 (1)
    • Git (4)
    • Linux (1)
    • 개발자로써 (8)
      • 회고 (1)
    • 문화생활 (0)
      • 여행 (0)
    • 도서📚 (0)
      • 일반 도서 (0)
      • 개발 도서 (0)
    • 프론트 (1)
      • snippet (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
두잇 두두
DB Index
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.