ssausand-sunny / cs-study

면접.. 붙으려면 CS 공부 해야겠지?
0 stars 0 forks source link

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

Open kgh2120 opened 4 months ago

kgh2120 commented 4 months ago

문제

예상 꼬리 질문 - 일반적으로 인덱스는 수정이 잦은 테이블에선 사용하지 않기를 권합니다. 왜 그럴까요? - 기본키는 인덱스라고 할 수 있을까요? 그렇지 않다면, 인덱스와 기본키는 어떤 차이가 있나요? - 그렇다면 외래키는요?

들어가야 할 키워드 정리

Hunnibs commented 3 months ago
질문 답변

인덱스란 추가 쓰기 작업을 통해 데이터를 빠르게 탐색할 수 있도록 도와주는 자료구조입니다. 주로 데이터베이스 읽기 작업 성능을 높이기 위해 사용합니다.

꼬리 질문

- 일반적으로 인덱스는 수정이 잦은 테이블에선 사용하지 않기를 권합니다. 왜 그럴까요? 정렬된 상태를 유지해야 하는 인덱스 자료구조에서는 수정이 잦을 경우 더 많은 코스트가 발생하기 때문에 사용을 권장하지는 않습니다. 그렇기 때문에 B+트리와 클러스터 인덱스에서는 권장되지 않지만 해시 인덱스와 논클러스터 인덱스는 비교적 수정에 대한 코스트가 적게 들기 때문에 활용할 수 있습니다. - 기본키는 인덱스라고 할 수 있을까요? 그렇지 않다면, 인덱스와 기본키는 어떤 차이가 있나요? 대부분의 데이터베이스에서는 기본키에 자동으로 클러스터 인덱스를 생성하는 것으로 알고있습니다. 따라서 클러스터 인덱스 기준으로 기본키는 인덱스라고 할 수 있습니다. - 그렇다면 외래키는요? 외래키는 기본적으로 인덱스라고 볼 수는 없지만 외래키를 기준으로 인덱스를 생성할 수는 있습니다.

kgh2120 commented 3 months ago
예상 답변 인덱스란 RDB에서 검색 성능을 상승시킬 때 사용하는 데이터 구조입니다. where 절이나 join 절에서 사용되는 속성에게 주로 사용하고, B트리나 해시와 같은 다양한 유형을 사용할 수 있습니다. 주로 B트리의 형태로 사용되며 이 경우 조회 성능은 상승하지만, 삽입, 수정, 삭제 시에는 성능 저하가 발생합니다.
예상 꼬리 질문 답변 - 일반적으로 인덱스는 수정이 잦은 테이블에선 사용하지 않기를 권합니다. 왜 그럴까요? 인덱스란 RDB에서 검색 성능을 상승시킬 때 사용하는 데이터 구조입니다. where 절이나 join 절에서 사용되는 속성에게 주로 사용하고, B트리나 해시와 같은 다양한 유형을 사용할 수 있습니다. 주로 B트리의 형태로 사용되며 이 경우 조회 성능은 상승하지만, 삽입, 수정, 삭제 시에는 성능 저하가 발생합니다. - 기본키는 인덱스라고 할 수 있을까요? 그렇지 않다면, 인덱스와 기본키는 어떤 차이가 있나요? 기본키는 인덱스의 한 종류라고 볼 수 있습니다. 기본키는 클러스터형 인덱스로 테이블에 저장되며, 테이블 조회 시 기본키를 기준으로 정렬된 것을 확인할 수 있습니다. 별도의 공간에 저장되는 세컨더리 인덱스와의 차이가 있고, 마찬가지로 조회 성능을 향상시킨다는 특징이 있습니다. - 그렇다면 외래키는요? DB마다 다르지만, MySQL의 innoDB 엔진을 사용하는 경우 FK에 인덱스가 존재하지 않는다면, 자동으로 생성해줍니다. 하지만 그 외에는 자동으로 생성해주지 않으며, 필요에 의해서 생성할 수 있습니다.
Leeminw commented 3 months ago
예상답변

인덱스는 관계형 데이터베이스에서 검색의 속도를 개선하는데 사용되는 기법으로, 추가적인 메모리를 사용하여 목차를 만들어 검색 속도를 개선합니다.

예상 꼬리 질문 답변

- 일반적으로 인덱스는 수정이 잦은 테이블에선 사용하지 않기를 권합니다. 왜 그럴까요? 인덱스는 일반적으로 검색성능을 개선하는데 사용됩니다. 따라서 저장될때 정렬이 발생하게 되는데, 수정이 잦아지게 되는 경우 인덱스의 정렬이 자주 발생하여 성능이 저하될 수 있습니다. - 기본키는 인덱스라고 할 수 있을까요? 그렇지 않다면, 인덱스와 기본키는 어떤 차이가 있나요? Primary key는 클러스터드 인덱스로 테이블 조회시 정렬된 상태로 데이터가 저장됩니다. 논 클러스터드 인덱스의 경우 추가적인 메모리를 사용하여 목차를 만들기 때문에 정렬된 상태로 저장되는 것이 아니라는 점에서 차이가 있습니다. - 그렇다면 외래키는요? 외래키의 경우도 필요에 의해 인덱스를 추가할 수 있습니다.

kjy0349 commented 3 months ago
예상 답변

인덱스는 테이블을 빠른 속도로 조회하기위해, 색인을 만들어 두는 기술을 말합니다.

예상 꼬리질문 답변

1. 수정이 잦을 경우, 인덱스가 적용된 컬럼을 기준으로 다시 색인을 만들어야하기 때문에 성능이 떨어지기 때문입니다. 2. 기본키는 클러스터드 인덱스라고 할 수 있습니다. 일반적인 인덱스와 다르게 테이블은 기본키를 기준으로 정렬되므로, 다른 인덱스보다 색인에 접근하는 속도가 더 빠릅니다. 3. 외래키도 필요에 따라 인덱스로 사용할 수 있습니다.