CS/데이터베이스

[CS/Database] 인덱스

dbfl9911 2024. 10. 28. 23:18
반응형

 


 

 

• 인덱스에 대해 설명해주시고, 장/단점에 대해 말해주세요. 

  • 인덱스란 테이블을 처음부터 끝까지 검색하는 방법인 FTS(Full Table Scan) 과는 달리 인덱스를 검색하여 해당 자료의 테이블을 엑세스 하는 방법입니다. 
  • 예를 들어, DB를 책으로 비유한다면 데이터는 책의 내용일 것이고, 데이터가 저장된 레코드 주소는 인덱스 목록에 있는 페이지 번호일 것입니다. 
  • 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 검색하는데 빠르지만, 새로운 값을 추가하거나 삭제, 수정하는 경우에는 쿼리문 실행 속도가 느려집니다. 
  • 즉, 인덱스는 데이터의 저장 성능을 희생하고, 그대신 데이터의 검색 속도를 높이는 기능이라 할 수 있습니다. 
📓 레코드, 필드?
· 레코드 : 논리적으로 연관된 필드의 집합 (= 행, 튜플)
· 필드 : 열에 해당하는 가장 작은 단위의 데이터

 


 

 

• 인덱스를 사용하면 좋은 경우 / 인덱스 사용을 피해야 하는 경우?

 

- 인덱스를 사용하면 좋은 경우

  1. where 절에서 자주 사용되는 컬럼
  2. 외래키가 사용되는 컬럼
  3. join에 자주 사용되는 컬럼

 

- 인덱스 사용을 피해야 하는 경우

  1. 데이터 중복도가 높은 컬럼
  2. DML이 자주 일어나는 컬럼
📓 데이터베이스 언어(DDL, DML, DCL)
· DDL : 데이터베이스 구조를 정의, 수정, 삭제하는 언어 
        ex) alter, create, drop
· DML : 데이터베이스 내의 자료 검색, 삽입, 삭제, 갱신을 위한 언어 
        ex) select, insert, delete, update
· DCL : 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 권리를 위한 언어
        ex) commit, rollback, grant, revoke

 

 


 

 

• DBMS는 인덱스를 어떻게 관리하고 있나요? (인덱스 자료구조)

 

1. B+Tree 자료구조

  • B-Tree를 개선한 형태의 자료구조이며,
  • 값을 리프 노드에만 저장하며 리프 노드들끼리는 링크드 리스트로 연결되어 있기 때문에, 부등호문 연산에 대해 효과적입니다. 
  • 리프 노드를 제외한 노드들은 포인터의 역할만을 수행합니다. 

 

2. 해시테이블 자료구조

  • 해시 함수를 이용해서 값을 인덱스로 변경하여 관리하는 자료구조로, 
  • 일반적인 경우 탐색, 삽입, 삭제 연산에 대해 O(1)의 시간 복잡도를 가지며 다른 관리 방식에 비해 빠른 성능을 가집니다. 
  • 하지만 값 자체를 변경하기 때문에 부등호문, 포함문 등의 연산에 사용할 수 없습니다. 

 


 

* 위 글은 아래 문서를 참고해 작성했습니다. 

https://dev-coco.tistory.com/158

 

신입 개발자 기술면접 질문 정리 - 데이터베이스

💡 데이터베이스의 특징에 대해 설명해주세요. 실시간 접근성(Real-Time Accessibility) : 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 하며, 지속적인 변화(Continuous Evloution) :

dev-coco.tistory.com

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/main/Database#index

 

Interview_Question_for_Beginner/Database at main · JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

https://medium.com/peppermint100/db-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-f940902f61a2

 

DB 인덱스 자료구조

인덱스는 데이터베이스에서 검색 속도를 향상시켜준다. key, value 형태로 정렬되어 책의 목차처럼 빠르게 어떤 정보에 접근할 수 있도록 도와준다. 정렬되어 있기 때문에 데이터를 찾을 때 테이

medium.com

https://velog.io/@chosj1526/DB-Index-%EA%B0%9C%EB%85%90-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0

 

[DB] Index - 개념, 장단점, 자료구조(B-Tree, B+Tree)

DB의 테이블에 대한 검색 속도를 향상시켜주는 자료구조테이블의 특정 컬럼에 인덱스 생성 : 해당 컬럼의 데이터를 정렬한 후, 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 컬

velog.io

 


review 1회독 2회독 3회독 4회독 5회독
check ✅(2/22)        

 

반응형