inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)

[실습] 2024년 1학기 평균 성적이 100점인 학생 조회하는 SQL문 튜닝하기

쿼리 튜닝 관련 질문 (limit)

117

chaelynjang

작성한 질문수 24

0

안녕하세요 강사님 좋은 강의 정말 감사드립니다. 실습 따라면서 튜닝을 익혀가고있는데 이번 강의에서 이해되지 않는 부분이 있어 질문 남깁니다.

일단 저는 MariaDB를 이용하여 실습을 하고 있습니다 죄송합니다 ㅠ

-- 튜닝 전 쿼리
SELECT st.student_id, st.name, AVG(sc.score) AS average_score
FROM students st 
JOIN scores sc ON st.student_id = sc.student_id
GROUP BY
st.student_id, st.name, sc.year, sc.semester
HAVING
AVG(sc.score)=100
AND sc.year=2024
AND sc.semester=1;

-- 튜닝 쿼리
SELECT st.student_id, st.name, AVG(sc.score) AS average_score
FROM students st
JOIN scores sc ON st.student_id = sc.student_id
WHERE sc.year=2024
AND sc.semester=1
GROUP BY
st.student_id, st.name, sc.year, sc.semester
HAVING
AVG(sc.score)=100;

두 쿼리 실행 속도에 별로 차이가 없어서
1) students, scores 두 테이블 각각 데이터 300만개로 늘리고

2) 두 쿼리 모두 동일하게 limit 10을
붙여줬더니 갑자기 성능 차이가 엄청나게 났습니다.

-- 튜닝 전 쿼리
SELECT st.student_id, st.name, AVG(sc.score) AS average_score
FROM students st 
JOIN scores sc ON st.student_id = sc.student_id
GROUP BY
st.student_id, st.name, sc.year, sc.semester
HAVING
AVG(sc.score)=100
AND sc.year=2024
AND sc.semester=1
LIMIT 10;

-- 튜닝 쿼리
SELECT st.student_id, st.name, AVG(sc.score) AS average_score
FROM students st
JOIN scores sc ON st.student_id = sc.student_id
WHERE sc.year=2024
AND sc.semester=1
GROUP BY
st.student_id, st.name, sc.year, sc.semester
HAVING
AVG(sc.score)=100 
limit 10;


제가 궁금한 것은 limit 10을 붙이면 튜닝을 하든 안하든 실행 속도가 더 줄어들어야 할 것 같은데 튜닝 전 쿼리가 갑자기 1분넘게 소요되더라고요.
튜닝 후 쿼리는 limit을 붙이나 안붙이나 별 차이가 없는데 튜닝 전 쿼리는 왜 limit을 붙이면 갑자기 성능이 엄청나게 저하되는걸까요..??

 

확인해주시고 답변 주시면 많은 도움 될 것 같습니다 감사합니다!

sql mysql dbms/rdbms query-tuning

답변 1

0

JSCODE 박재성

안녕하세요 chaelynjang님! 강의 잘 봐주셔서 감사합니다:)

질문 내용이 아주 흥미롭고 저도 이유가 궁금하네요!

같이 쿼리문 분석 도와드리기 위해 아래 카톡 링크로

실행 계획 결과(EXPLAIN)와 실행 세부 계획(EXPLAIN ANALYZE) 결과값

캡쳐해서 보내주실 수 있을까요~??

https://open.kakao.com/o/sDPmGYzg

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

0

6

1

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

0

78

3

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

1

117

2

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

0

141

2

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

0

117

2

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

0

119

2

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

0

165

2

측정 시간 차이

0

197

2

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

0

193

1

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

0

181

2

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

0

255

3

ORDER BY 튜닝관련 문의

0

198

2

강의 질문 있습니다

0

116

2

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

0

439

3

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

1

586

2

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

0

317

2

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

0

292

1

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

0

447

1

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

4

243

1

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

0

420

2

WHERE A OR B 에서 인덱스 걸기

0

372

2

질문이있습니다.

1

306

1

테이블에 기본키가 없을때

0

376

1

질문있어요!!!

1

208

1