✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성 실행 계획 조회해보기 인덱스 컬럼을 가공해서 사용하지 않게 SQL문 수정하기 [이것만은 꼭 기억해두자!] - 인덱스 컬럼을 가공(함수 적용, 산술 연산, 문자역 조작 등)하면, MySQ
✅ 인덱스가 작동하지 않는 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성하기 실행 계획 조회해보기 [이것만은 꼭 기억해두자!] 넓은 범위의 데이터를 조회하는 경우, 인덱스를 사용해서 조회하는 것보다 풀 테이블 스캔이 효과적이라고 판단한
✅ 커버링 인덱스(Covering Index)란? SQL문을 실행시킬 때 필요한 모든 컬럼을 갖고 있는 인덱스를 커버링 인덱스(Covering Index)라고 한다. ✅ 예시 위와 같은 users 테이블이 있고, name 인덱스가 있다고 가정하자. 그
인덱스를 사용하면 데이터를 조회할 때의 성능이 향상된다. 그러면 인덱스를 무조건적으로 많이 추가하는 게 좋다고 착각할 수도 있다. 하지만 인덱스를 추가하면 조회 성능은 올라가지만, 쓰기 작업(삽입, 수정, 삭제)의 성능은 저하된다. 왜 그런 지 직관적
✅ 인덱스(Index)란? 인덱스의 정의를 찾아보면 아래와 같다. 인덱스(Index)는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조를 뜻한다. 위의 정의보다는 아래의 의미로 인덱스를 기억하자. 그래야 훨씬 직관적으로 이해하기가 쉽
✅ UNIQUE 제약 조건을 추가하면 자동으로 인덱스가 생성된다. MySQL은 UNIQUE 제약 조건을 추가하면 자동으로 인덱스가 생성된다. 확인해보자. 테이블 생성 인덱스 확인하기 이런 특징 때문에 UNIQUE 특징으로 인해 생성되는 인덱스를 보고
MySQL 구조는 왜 갑자기 파악하나요? → 어떤 부분에서 MySQL의 성능을 많이 잡아 먹는지, 어떤 요인이 주로 문제를 일으키는 지 파악할 수 있어야 한다. 그 원인을 파악하기 위해서는 MySQL 구조를 알아야만 한다. ✅ MySQL의 아키텍처 M
✅ 신입 백엔드 개발자 면접에 종종 등장하는 ‘DB 성능 최적화 경험’ MySQL과 같은 DB를 개인 프로젝트나 토이 프로젝트에서 사용할 때는 DB 성능이 느려지는 경우가 거의 없다. 하지만 실제 현업에서 DB를 사용하다보면 성능이 느려지는 경우를 꼭
✅ DB 성능을 개선하는 방법 DB에 부하가 걸렸을 때 성능을 개선하는 방법은 다양하다. (아래 용어가 뭔지 몰라도 상관없다. ‘여러가지 방식으로 DB 성능을 개선할 수 있구나’ 정도로 알고 넘어가자.) SQL 튜닝 캐싱 서버 활용 (Redis 등)