[Index-2][Optimization]인덱스 설계와 카디널리티 전략
·
Database/MySQL
1. 들어가며 인덱스는 단순히 많이 만든다고 해서 성능이 보장되는 것이 아니다. 잘못 설계된 인덱스는 쿼리 성능을 개선하지 못할 뿐만 아니라, 데이터 삽입 및 수정 시 불필요한 오버헤드를 발생시키고 저장 공간을 낭비하게 만든다. 따라서 "어떤 컬럼에, 어떤 순서로 인덱스를 구성할 것인가"라는 실무적인 질문에 답할 수 있어야 한다. 본 챕터에서는 효율적인 인덱스 설계를 위한 핵심 개념인 카디널리티와 복합 인덱스 전략을 다룬다.2. 단일 인덱스의 구조특정 컬럼 하나에 대해 인덱스를 생성하는 것을 단일 인덱스라 한다. 데이터베이스는 원본 테이블과 별개로, 해당 컬럼을 기준으로 정렬된 인덱스 테이블을 생성하여 관리한다.2.1. 원본 테이블 (book)book_idcategoryis_adult1만화☐2에세이✅3개..
[Index-1][Optimization] 인덱스의 기초와 존재 이유
·
Database/MySQL
1. DB 성능의 비밀, 인덱스(Index)란 무엇인가? 물리 수업을 위해 수천 페이지에 달하는 두꺼운 전공 서적을 구입했다고 가정하자. 교수님이 '열역학'과 관련된 모든 내용을 찾아오라는 과제를 내주었을 때, 인덱스가 없는 상태라면 책의 첫 페이지부터 마지막 페이지까지 일일이 넘기며 해당 단어를 찾아야 한다. 이러한 탐색 방식을 데이터베이스에서는 Full Scan(전체 테이블 스캔)이라고 부른다. 테이블의 규모가 커질수록 탐색 시간은 데이터의 양에 비례하여 기하급수적으로 늘어나며, 이는 곧 시스템의 응답 지연으로 이어진다. 이때 방대한 분량 속에서 특정 주제의 위치를 미리 기록해 둔 '책갈피'나 '찾아보기'가 있다면 탐색 효율은 극적으로 향상된다. 데이터베이스의 인덱스(Index)가 바로 이 책갈피의..