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