[DB] 인덱스(Index)

함민혁·2023년 9월 4일
0

cs면접준비

목록 보기
38/43

인덱스란?

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

책을 예로 들었을때, 저자는 책의 맨앞에 색인을 추가해놔서, 독자가 원하는 내용을 찾고자 할때, 시간을 줄여줌
데이터베이스의 인덱스는 책의 색인과 같다.

인덱스를 활용하면 데이터를 조회하는 SELECT 이외에 DELETE나 UPDATE속도도 늘어남. (결국 이 둘도 이 작업을 위해 조회를 해야하기 때문!)

장점
테이블을 조회하는 속도와 그에 따른 성능 향상
전반적인 시스템의 부하를 줄일 수 있음

단점
인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간 필요
인덱스를 관리하기 위한 추가 작업 필요
잘못 사용 시 오히려 역효과 발생

사용하면 좋은 경우

규모가 큰 테이블, INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼

인덱스가 무엇이고, 언제 사용하는지 설명해주세요

관계형 데이터베이스에서 검색속도를 높이기 위해 사용하는 기술이며, 컬럼에 색인을 부여해서 빠르게 검색이 가능함. 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장함.
주로 규모가 큰 테이블이나, 수정이 적은 컬럼, 조회가 잦은 컬럼이 효율적임

일반적으로 인덱스는 수정이 잦은 테이블에선 사용하지 않기를 권함. 그 이유는 무엇일까?

인덱스를 항상 정렬된 상태로 유지해야 하기 때문에 수정을 할 경우 인덱스를 추가하거나 인덱스를 사용하지 않는다는 처리 드으이 추가적인 작업이 필요하기 때문에 성능 저하가 발생함.

기본키는 인덱스일까? 아니라면 둘의 차이는?

기본키는 주로 데이터를 고유하게 식별하기 위한 용도로 사용되며, 고유해야 하고 NULL 값이 허용되지 않습니다. 반면에 인덱스는 검색 및 정렬 성능을 향상시키기 위한 용도로 사용되며, 중복된 값과 NULL 값이 허용합니다.

profile
Born to be FE developer 🧑🏻‍💻

0개의 댓글