강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của chaelynjang7321
chaelynjang7321

câu hỏi đã được viết

Nhập môn và Thực hành Tối ưu hóa hiệu suất MySQL dành cho cả người không chuyên (Phần Tuning SQL)

[Thực hành] Tối ưu câu lệnh SQL truy vấn sinh viên có điểm trung bình 100 điểm trong học kỳ 1 năm 2024

쿼리 튜닝 관련 질문 (limit)

Viết

·

111

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을 붙이면 갑자기 성능이 엄청나게 저하되는걸까요..??

 

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

sqlmysqldbms/rdbmsquery-tuning

Câu trả lời 1

0

jscode님의 프로필 이미지
jscode
Người chia sẻ kiến thức

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

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

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

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

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

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

Hình ảnh hồ sơ của chaelynjang7321
chaelynjang7321

câu hỏi đã được viết

Đặt câu hỏi