inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

실행 계획 type / 정렬 방식

해결된 질문

275

fnelclsrn123

작성한 질문수 1

0

안녕하세요 강사님! 실행 계획 type에 대해서 궁금한 점이 있습니다. ref가 UNIQUE가 아닌 컬럼의 인덱스를 사용한 경우라고 해주셨는데, 그러면 UNIQUE가 아닌 컬럼의 인덱스이지만 index나 range의 경우에 해당하면 해당 타입으로 표시되는 거고 저 둘(index, range)이 아닐 때, ref 타입으로 표시되는 걸까요?

 

그리고 한 가지 더 궁금한 점이 있는데, 만약 데이터를 조회한 결과들을 바로 View로 보내는 게 아니고 자바 코드를 사용한 계산을 통해 가공해야 하는 상황이라면 굳이 ORDER BY를 쓰지 않고, 데이터 조회 후, Collections.sort()와 같은 자바 코드로 정렬하는 편이 나을까요?

sql mysql dbms/rdbms query-tuning

답변 1

2

JSCODE 박재성

안녕하세요 fnelclsrn123님! 질문해주신 내용에 대해 하나씩 답변 드려볼게요:)

 

  1. 실행 계획 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

 

  1. 만약 데이터를 조회한 결과들을 바로 View로 보내는 게 아니고 자바 코드를 사용한 계산을 통해 가공해야 하는 상황이라면 굳이 ORDER BY를 쓰지 않고, 데이터 조회 후, Collections.sort()와 같은 자바 코드로 정렬하는 편이 나을까요?

-> 훌륭한 질문이네요! DB에서 처리했을 때 비효율적인 작업은 애플리케이션 레벨(자바 단)에서 작업을 처리하는 식으로 구성하기도 합니다. 하지만 일반적으로 정렬 작업(ORDER BY)은 DB가 더 효율적으로 처리할 수 있을 때가 많습니다.

예를 들어, 10만 건의 데이터 중에서 생년월일이 가장 빠른 사용자를 찾아야 한다고 가정해봅시다. 자바 애플리케이션에서 이 과정을 수행하려면 10만 건의 데이터를 다 불러온 뒤에 Collections.sort()를 해야 할 겁니다. 오히려 애플리케이션 단에 10만 건의 데이터를 불러온다는 것 자체가 성능상의 비효율을 초래할거에요. 그러다보니 정렬(ORDER BY) 작업은 애플리케이션 단보다 DB에서 처리를 하는 편이기도 합니다:)

 

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

1

fnelclsrn123

명확한 답변 감사드립니다!

큰 범위 조회 시 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