인덱스를 사용하면 데이터를 조회할 때의 성능이 향상된다. 그러면 인덱스를 무조건적으로 많이 추가하는 게 좋다고 착각할 수도 있다. 하지만 인덱스를 추가하면 조회 성능은 올라가지만, 쓰기 작업(삽입, 수정, 삭제)의 성능은 저하된다. 왜 그런 지 직관적
✅ 커버링 인덱스(Covering Index)란? SQL문을 실행시킬 때 필요한 모든 컬럼을 갖고 있는 인덱스를 커버링 인덱스(Covering Index)라고 한다. ✅ 예시 위와 같은 users 테이블이 있고, name 인덱스가 있다고 가정하자. 그
✅ 인덱스가 작동하지 않는 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성하기 실행 계획 조회해보기 [이것만은 꼭 기억해두자!] 넓은 범위의 데이터를 조회하는 경우, 인덱스를 사용해서 조회하는 것보다 풀 테이블 스캔이 효과적이라고 판단한
✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성 실행 계획 조회해보기 인덱스 컬럼을 가공해서 사용하지 않게 SQL문 수정하기 [이것만은 꼭 기억해두자!] - 인덱스 컬럼을 가공(함수 적용, 산술 연산, 문자역 조작 등)하면, MySQ
✅ 부서별 최대 연봉을 가진 사용자들 조회하기 테이블 생성 100만 건의 랜덤 데이터 삽입 기존 SQL문 성능 체크하기 실행 계획 조회해보기 성능 개선해보기
✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성하기 데이터 조회해서 성능 측정하기 실행 계획 조회해보기 성능 개선하기 실행 계획 조회해보기 [이것만은 꼭 기억해두자!] - HAVING문 대신에 WHERE문을 쓸 수 있는 지 체크해보자
✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 데이터 조회해보기 ✅ 조회 결과 데이터의 개수 줄이기 실제 페이스북, 인스타그램의 서비스를 보더라도 한 번에 모든 게시글의 데이터를 불러오지 않는다. 스크롤을 내리면서 필요한 데이터를 그때그때 로딩
✅ 멀티 컬럼 인덱스란? 멀티 컬럼 인덱스란, 2개 이상의 컬럼을 묶어서 설정하는 인덱스를 뜻한다. 즉, 데이터를 빨리 찾기 위해 2개 이상의 컬럼을 기준으로 미리 정렬해놓은 표이다. ✅ 예시를 통해 멀티 컬럼 인덱스 의미를 직관적으로 이해해보자. 아
✅ WHERE문에 인덱스를 걸기 vs ORDER BY문에 인덱스를 걸기 절대적인 건 없다. 실행 계획과 SQL 실행 시간을 보면서 어떻게 인덱스를 거는 게 나은지 찾아가는 게 정확하다. 한 번 예시를 보고 판단해보자. 테이블 생성 100만 건의 랜덤
✅ ’실행 계획’이란 ? 옵티마이저가 SQL문을 어떤 방식으로 어떻게 처리할 지를 계획한 걸 의미한다. 이 실행 계획을 보고 비효율적으로 처리하는 방식이 있는 지 점검하고, 비효율적인 부분이 있다면 더 효율적인 방법으로 SQL문을 실행하게끔 튜닝을 하