반응형

🔑 Database

5. DB에서 인덱스를 사용하는 이유는 무엇인지 설명하시오.

👉🏻 DBMS의 인덱스는 검색 속도를 높이기 위한 기술입니다. 인덱스는 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가(INSERT), 삭제(DELETE), 수정(UPDATE)하는 경우에는 쿼리문 실행 속도가 느려집니다. 즉, DBMS에서 인덱스는 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이라고 할 수 있습니다. 

인덱스를 사용하면 좋은 경우에는 WHERE절에서 자주 사용되는 Column, 외래키가 자주 사용되는 Column, JOIN에 자주 사용되는 Column이 있습니다. 반면 인덱스 사용을 피해야 하는 경우는 Data 중복도가 높은 Column, DML이 자주 일어나는 Column이 있습니다.

Clustered Index

👉🏻 순서대로 정렬되어 있어서 값을 찾을 때 해당 부분에서만 찾으면 됨

👉🏻 정렬되어 있기 때문에 삽입 시에 오래걸림

👉🏻 한 테이블 당 하나만, PK와 비슷

👉🏻 범위 검색에 좋음

👉🏻  존재하는 PK 사이에 삽입할 시 매우 오래걸림

* Auto-increment

Non-Clustered Index

👉🏻 인덱스와 간접 참조되어 있음

👉🏻  정렬되지 않았기 때문에 삽입 시 오래 걸리지 않음, 해시 테이블 사용하여 빠름

👉🏻 한 테이블에 여러 개

👉🏻 삽입 시 추가 작업 필요(인덱스 생성)

👉🏻 카디널리티가 높아질수록 쓰면 좋음

* 카디널리티는 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표, 카디널리티가 높을수록 중복 수치가 낮아짐


출처: https://wooaoe.tistory.com/47?category=822650 [개발개발 울었다]

반응형

+ Recent posts