반응형
목차
인덱스 왜 사용해야하나요?
문제상황
데이터 10억개가 저장되어 있습니다.
아래 SQL문을 실행하면 데이터베이스는 어떻게 데이터를 검색할까요?
SELECT * FROM Employees WHERE Name = 'Alice';
데이터베이스는 Full Table Scan 방식을 이용하여 데이터를 검색합니다.
Full Table Scan
- 테이블의 첫번째 행부터 마지막 행까지 모든 행을 순차적으로 검사하는 방법입니다.
- 단점 : 시간이 오래 걸립니다.
해결방법
인덱스를 적용합니다.
인덱스란 무엇인가요?
책 뒷면의 색인과 매우 유사합니다.
💡 인덱스는 데이터를 빠르게 찾기 위해 사용하는 자료구조입니다.
아래와 같은 순서대로 인덱스에 대해 살펴보겠습니다.
- 인덱스가 어떤 데이터를 가지고 있는지
- 인덱스는 어떤 방식으로 데이터를 빠르게 검색하는지
- 인덱스엔 어떤 종류가 있는지
- 인덱스를 어떻게 사용하면 되는지
인덱스는 어떤 데이터를 가지고 있나요?
💡 테이블의 특정 컬럼 값과 레코드의 위치를 맵핑한 데이터를 가지고 있습니다.
- 저장공간 필요
인덱스도 데이터이기 때문에 저장될 공간이 있어야합니다.
보통 데이터베이스의 10% 공간을 할당해주어야 합니다.
(MySQL InnoDB의 경우, 테이블과 동일한 테이블스페이스 파일에 저장됩니다.)
- 데이터 동기화 필요
인덱스가 맵핑 데이터라는 뜻은..
테이블에 데이터를 추가, 수정, 삭제할 때
인덱스도 동일하게 추가, 수정, 삭제 되어야 한다는 것입니다.
⇒ 걱정마세요! 동기화 과정은 데이터베이스 엔진이 백그라운드에서 자동으로 처리해줍니다.
다음 게시물
https://lotuus.tistory.com/167
반응형
'Backend' 카테고리의 다른 글
인덱스(3) : 인덱스 종류 (0) | 2024.07.17 |
---|---|
인덱스(2) : 인덱스가 데이터를 검색하는 방법 (1) | 2024.07.17 |
[SpringBoot] UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only 해결후기 (6) | 2022.12.06 |
[SpringBoot] Jpa Connection Minimum-Idle 설정하지 말자... 에러 후기 (0) | 2022.12.04 |
[SpringBoot] Apache Poi를 이용한 엑셀다운로드는 SXSSF를 쓰자..! (0) | 2022.12.03 |