itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 독립서점
  • SwiftUI
  • 생활코딩
  • SWIFT
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • ios
  • 킨디
  • 세그멘테이션
  • binding
  • 개발자
  • 연결리스트
  • POSTECH
  • mongodb
  • 어플
  • AppleDevloperAcademy
  • CoreData
  • CS
  • crud
  • 점주
  • nosql

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[CS - 데이터베이스] Index에서 Column 사용 (또는 선정) 기준
CS/데이터베이스

[CS - 데이터베이스] Index에서 Column 사용 (또는 선정) 기준

2023. 2. 13. 14:21

Index에서 Column을 선정하는 기준

출처 : https://dataschool.com/sql-optimization/multicolumn-indexes/

DB에서 어떤 Column을 선정하느냐에 따라 다양한 Index를 만들 수 있다. 우리는 어떤 Column을 선정하는 것이 좋을까?

이 부분은 굉장히 빈번하게 나오는 내용이지만 개념은 간단하다. 그래서 결과부터 알아보고 그 이유를 살펴보자.

 

Column 선정 기준

Index에서 사용하는 Column은

  • 조회 빈도가 높아야 한다.
  • 수정 빈도가 낮아야 한다.
  • 카디널리티가 높아야 한다.
  • 선택도가 낮아야 한다.

왜냐하면,

  • Index가 SELECT ~ WHERE ~ 절이기 때문에 자주 쓰이는 것이어야 한다.
  • 수정될 때마다 데이터가 재정렬되기 때문에 그 비용이 크면 안되기 때문이다.
  • 카디널리티는 ‘얼마나 중복이 안되냐’, ‘얼마나 고유한 값이냐’를 말한다. 최대한 중복을 피해야 한다는 뜻이다.
  • 선택도는 카디널리티의 반대말이다. 중복이 덜 되어야 Index 효과가 크기 때문이다.

 

쉽게 말해서 많이 조회되고, 수정이 덜 되고, 최대한 겹치는 값이 없는 Column이어야 한다.

 

Index의 특성

Column 선정 기준을 공부할 때, Index의 특성과 함께 떠올린다면 전체 내용을 보다 유기적으로 기억할 수 있다.

 

Index라는 건, 무수히 많은 데이터베이스에서 찾고자 하는 값을 효과적으로 찾도록 도와주는 장치이다.

이 장치를 만드는 것은 시간도 들고 공간도 필요하다. 또한, 데이터베이스가 수정되면 Index 또한 수정되어야 한다.

보통은 하나의 테이블에 4~5개의 Index를 만드는 편이다.

데이터의 중복이 많은 경우는 (예를 들면 남/녀, true/false 등. 각 비율은 중요치 않음) Index를 생성하기에 부적합하다.

데이터의 양이 많을수록 Index의 효과를 톡톡히 볼 수 있고, Join 조건으로 자주 사용되는 Column 또한 Index를 만들기 적합하다.

 

하나의 DB 테이블에서 어떤 Column을 사용하느냐에 따라 여러 Index를 만들 수 있다.

Index 하나를 만드는 것 또한 비용이 들기 때문에 좋은 Column을 골라 효율적인 Index를 만드는 것이 중요하다.

 

그래서 Column 선정 기준을 배우는 것이다.

저작자표시 (새창열림)

'CS > 데이터베이스' 카테고리의 다른 글

[CS - 데이터베이스] 데이터베이스의 정규화  (0) 2023.02.13
[CS - 데이터베이스] Index를 Hash Table이 아닌, B+Table로 구현하는 이유  (0) 2023.02.13
[CS - 데이터베이스] DB의 Index  (0) 2023.02.13
[CS - 데이터베이스] Transaction과 Deadlock  (0) 2023.01.28
[CS - 데이터베이스] RDB와 NoSQL  (2) 2023.01.26
    'CS/데이터베이스' 카테고리의 다른 글
    • [CS - 데이터베이스] 데이터베이스의 정규화
    • [CS - 데이터베이스] Index를 Hash Table이 아닌, B+Table로 구현하는 이유
    • [CS - 데이터베이스] DB의 Index
    • [CS - 데이터베이스] Transaction과 Deadlock
    itisjustK
    itisjustK

    티스토리툴바