실행 계획 type / 정렬 방식
안녕하세요 강사님! 실행 계획 type에 대해서 궁금한 점이 있습니다. ref가 UNIQUE가 아닌 컬럼의 인덱스를 사용한 경우라고 해주셨는데, 그러면 UNIQUE가 아닌 컬럼의 인덱스이지만 index나 range의 경우에 해당하면 해당 타입으로 표시되는 거고 저 둘(index, range)이 아닐 때, ref 타입으로 표시되는 걸까요?
그리고 한 가지 더 궁금한 점이 있는데, 만약 데이터를 조회한 결과들을 바로 View로 보내는 게 아니고 자바 코드를 사용한 계산을 통해 가공해야 하는 상황이라면 굳이 ORDER BY를 쓰지 않고, 데이터 조회 후, Collections.sort()와 같은 자바 코드로 정렬하는 편이 나을까요?
답변 1
2
안녕하세요 fnelclsrn123님! 질문해주신 내용에 대해 하나씩 답변 드려볼게요:)
실행 계획 type에 대해서 궁금한 점이 있습니다. ref가 UNIQUE가 아닌 컬럼의 인덱스를 사용한 경우라고 해주셨는데, 그러면 UNIQUE가 아닌 컬럼의 인덱스이지만 index나 range의 경우에 해당하면 해당 타입으로 표시되는 거고 저 둘(index, range)이 아닐 때, ref 타입으로 표시되는 걸까요?
-> 네, 대부분의 경우에는 ref 타입으로 표시됩니다.
그렇다보니 처음 공부하실 때는 말씀해주신 대로 이해하셔도 됩니다!
나중에 조금 더 깊이 있게 공부하실 때는 MySQL의 공식문서를 통해
어떤 상황에 ref가 표시되는 지 추가적으로 공부하셔도 좋을 것 같습니다.https://dev.mysql.com/doc/refman/8.4/en/explain-output.html#explain-join-types
만약 데이터를 조회한 결과들을 바로 View로 보내는 게 아니고 자바 코드를 사용한 계산을 통해 가공해야 하는 상황이라면 굳이 ORDER BY를 쓰지 않고, 데이터 조회 후, Collections.sort()와 같은 자바 코드로 정렬하는 편이 나을까요?
-> 훌륭한 질문이네요! DB에서 처리했을 때 비효율적인 작업은 애플리케이션 레벨(자바 단)에서 작업을 처리하는 식으로 구성하기도 합니다. 하지만 일반적으로 정렬 작업(ORDER BY)은 DB가 더 효율적으로 처리할 수 있을 때가 많습니다.
예를 들어, 10만 건의 데이터 중에서 생년월일이 가장 빠른 사용자를 찾아야 한다고 가정해봅시다. 자바 애플리케이션에서 이 과정을 수행하려면 10만 건의 데이터를 다 불러온 뒤에 Collections.sort()를 해야 할 겁니다. 오히려 애플리케이션 단에 10만 건의 데이터를 불러온다는 것 자체가 성능상의 비효율을 초래할거에요. 그러다보니 정렬(ORDER BY) 작업은 애플리케이션 단보다 DB에서 처리를 하는 편이기도 합니다:)
이 외로 궁금하신 점 있으시면 편하게 질문 남겨주세요~~
큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.
0
36
2
쿼리 결과 그리드에서 TYPE, POSSIBLE_KEYS 다릅니다
0
80
3
강의 내용을 블로그에 정리해도 괜찮을까요?
1
120
2
여러 테이블 조인시 where 절이 필요한가? 에 대해 질문있습니다.
0
143
2
풀 인덱스 스캔 질문있습니다.
0
119
2
멀티컬럼인덱스 질문있습니다.
0
121
2
쿼리 튜닝 관련 질문 (limit)
0
119
1
페이지기반 페이지네이션 쿼리를 최적화하고 싶습니다.
0
168
2
측정 시간 차이
0
200
2
[실습] 인덱스 직접 설정해보기 / 성능 측정해보기 강의에서요.
0
195
1
커버링 인덱스(Covering Index)강의에서 질문이있습니다.
0
184
2
한 번에 너무 많은 데이터를 조회하는 SQL문 튜닝하기 질문입니다
0
258
3
ORDER BY 튜닝관련 문의
0
200
2
강의 질문 있습니다
0
118
2
인덱스 많은 테이블에서 데이터 많아질 수록 insert 속도 증가
0
442
3
MariaDB 사용 시 EXPLAIN ANALYZE 이용 불가 문의
1
590
2
SQL 튜닝에 대한 사례나 Best Practice 등을 모은 자료를 알려주실 수 있나요?
0
320
2
혹시 심화 수업은 계획이 없으신가요..?
0
295
1
jpa쿼리튜닝 팁이 궁금합니다.!
0
448
1
특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문
4
246
1
created_at 에 index 거는것과 지속적인 데이터 증가
0
424
2
WHERE A OR B 에서 인덱스 걸기
0
377
2
질문이있습니다.
1
312
1
테이블에 기본키가 없을때
0
381
1





