inflearn logo
강의

Course

Instructor

MySQL Performance Optimization Intro/Practice for Non-Majors (SQL Tuning Edition)

[실습] 인덱스 직접 설정해보기/성능 측정해보기

Resolved

25

dongdong2

4 asked

0

강사님 안녕하세요!

강의 잘 듣고 있습니다. 너무 좋네요! 😊


[실습] 인덱스 직접 설정해보기/성능 측정해보기 => 실습 중 질문이 있습니다!


user.age에 인덱스 생성 전

[2026-07-12 11:51:16] 1,028 rows retrieved starting from 1 in 420 ms (execution: 110 ms, fetching: 310 ms)

=> 이런식으로 평균 400ms 속도가 측정되다가


user.age에 인덱스 생성 후

[2026-07-12 12:19:48] 1,028 rows retrieved starting from 1 in 510 ms (execution: 11 ms, fetching: 499 ms)

[2026-07-12 12:19:59] 1,028 rows retrieved starting from 1 in 339 ms (execution: 9 ms, fetching: 330 ms)

[2026-07-12 12:20:09] 1,028 rows retrieved starting from 1 in 329 ms (execution: 7 ms, fetching: 322 ms)


인덱스 생성 후 최초 실행시에 510ms로 시간이 한번 튀는데

검색해 봤을때는 인덱스 생성 직후 캐싱 되어있지 않아서 발생하는 현상이라고 하는데

이러한 것은 신경쓰지 않아도 되는지 궁금합니다!


감사합니다!

sql mysql dbms/rdbms query-tuning

Answer 2

0

jscode

안녕하세요 dongdong2님! 강의 잘 봐주셔서 감사합니다ㅎㅎ

정확히는 인덱스가 영향을 주는 건 execution 구간입니다. 여기는 110ms → 7~11ms로 이미 10배 이상 깔끔하게 줄었어요. 실습에서 확인하려던 효과는 완벽하게 나온 겁니다.

그럼 510ms 스파이크의 정체는 뭘까요 ?

튄 부분을 보면 execution이 아니라 fetching(499ms) 입니다. fetching은 1,028행을 DB에서 클라이언트(DataGrip/DBeaver 등)로 전송하고 그리드에 렌더링하는 시간이에요. 인덱스와는 무관한 구간이고, 네트워크 상태·JVM GC·클라이언트 UI 렌더링 등에 따라 수백 ms씩 흔들립니다.

즉 "인덱스가 아직 캐싱 안 돼서"라는 설명은 방향이 살짝 다릅니다. 그 논리라면 execution이 튀어야 하는데, 첫 실행부터 이미 11ms였거든요.

정리하자면 크게 신경 쓰지 않으셔도 되는 정도의 오차입니다.

이 외로 또 궁금하신 점 있으시면 편하게 질문 남겨주세요~~

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. dongdong2님.

인덱스 생성 후 쿼리를 처음 실행할 때 시간이 더 소요되는 현상에 대해 설명드리겠습니다. 이와 같은 현상은 데이터베이스에서 흔히 발생하는 “캐시 효과” 때문입니다. 즉, 데이터베이스 시스템은 쿼리 결과에 필요한 데이터를 캐시에 저장하여, 이후 동일한 쿼리가 실행될 경우 더 빠르게 처리할 수 있도록 합니다. 처음 인덱스를 사용하여 쿼리를 실행했을 때 캐시되지 않은 데이터들이 있어 시간이 더 소요된 것입니다.

캐시가 초기화되거나, 데이터베이스가 처음 작동해 메모리에 데이터가 아직 로드되지 않은 경우 이러한 현상이 발생할 수 있습니다. 그러나 이후 실행에 있어서는 쿼리 성능이 향상된 것을 볼 수 있습니다. 이러한 초기 캐시 미스 현상은 성능 측정에서 지배적인 요인으로 작용하지 않으므로 크게 신경쓰지 않으셔도 됩니다.

관련해서 비슷한 상황 및 추가 정보에 대해 알고 싶으시면, 아래 유사한 질문을 참고하세요:

이러한 캐시의 초기 현상은 정상적인 과정이며, 결과적으로 인덱스를 생성하여 성능이 개선된 모습에서 알 수 있듯이 올바른 방향으로 성능 최적화를 해주셨습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

[실습] WHERE문이 사용된 SQL문 튜닝하기 - 2

0

16

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

65

2

쿼리 결과 그리드에서 TYPE, POSSIBLE_KEYS 다릅니다

0

101

3

강의 내용을 블로그에 정리해도 괜찮을까요?

1

138

2

여러 테이블 조인시 where 절이 필요한가? 에 대해 질문있습니다.

0

165

2

풀 인덱스 스캔 질문있습니다.

0

139

2

멀티컬럼인덱스 질문있습니다.

0

145

2

쿼리 튜닝 관련 질문 (limit)

0

135

1

페이지기반 페이지네이션 쿼리를 최적화하고 싶습니다.

0

183

2

측정 시간 차이

0

222

2

[실습] 인덱스 직접 설정해보기 / 성능 측정해보기 강의에서요.

0

217

1

커버링 인덱스(Covering Index)강의에서 질문이있습니다.

0

200

2

한 번에 너무 많은 데이터를 조회하는 SQL문 튜닝하기 질문입니다

0

285

3

ORDER BY 튜닝관련 문의

0

218

2

강의 질문 있습니다

0

134

2

인덱스 많은 테이블에서 데이터 많아질 수록 insert 속도 증가

0

483

3

MariaDB 사용 시 EXPLAIN ANALYZE 이용 불가 문의

1

631

2

SQL 튜닝에 대한 사례나 Best Practice 등을 모은 자료를 알려주실 수 있나요?

0

347

2

혹시 심화 수업은 계획이 없으신가요..?

0

302

1

jpa쿼리튜닝 팁이 궁금합니다.!

0

460

1

특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문

4

257

1

created_at 에 index 거는것과 지속적인 데이터 증가

0

455

2

WHERE A OR B 에서 인덱스 걸기

0

398

2

질문이있습니다.

1

331

1