inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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)

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

9

dongdong2

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

0

안녕하세요. 강의 잘 보고 있습니다!


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

해당 강의에서 질문이 있습니다 :)


이전 강의에서 멀티 컬럼 인덱스의 경우,

첫번째 컬럼 기준으로 먼저 정렬하고, 그 다음 두번째 컬럼 기준으로 정렬한다고 배웠던 것 같습니다!


따라서

idx_created_at <-> idx_created_at_department 실행계획
idx_department <-> idx_department_created_at 실행계획이

각각 비슷할 것이라고 예상했는데, 강의에서는 idx_created_at과 두 개의 멀티 컬럼 인덱스 idx_created_at_department, idx_department_created_at 가 비슷하다는 것을 알 수 있었습니다!


이유가 궁금하여 질문 남겨봅니다 !


sql mysql dbms/rdbms query-tuning

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. dongdong2님께서 질문해 주셔서 감사합니다!

멀티 컬럼 인덱스에서의 인덱스 사용 방식을 이해하는 데는 약간의 혼동이 있을 수 있습니다. 우선, 멀티 컬럼 인덱스는 정의된 순서에 따라 정렬되고 활용되며, 인덱스가 어떻게 사용되는지는 쿼리에 따라 다소 다르게 작용할 수 있습니다.

멀티 컬럼 인덱스 이해하기

  1. 순서와 활용: 멀티 컬럼 인덱스는 정의된 컬럼의 순서에 따라 사용됩니다. 예를 들어, 인덱스가 idx_created_at_department로 정의되었다면, created_at을 기준으로 먼저 정렬되고, 같은 created_at값에 대해 department로 정렬됩니다.

  2. 인덱스 사용 우선순위: 쿼리에서는 항상 첫 번째 컬럼을 우선적으로 사용합니다. idx_created_at_department일 때 created_at으로 특정 검색을 하면 매우 효과적으로 작동합니다. 반면, idx_department_created_atdepartment를 첫 번째 컬럼으로 사용하여 인덱스를 최적으로 활용하지 못할 수 있습니다.

  3. 비슷한 성능 이유: idx_created_at 단일 인덱스와 idx_created_at_department가 비슷한 성능을 보이는 이유는, 검색 시 created_at을 사용하여 필터링할 때 동일한 방식으로 인덱스를 활용하기 때문입니다. 그러나 idx_department_created_atcreated_at을 두 번째로 검색해야 하므로 효율이 떨어질 수 있습니다.

이와 관련된 내용을 다룬 게시물이 도움이 될 수 있습니다:

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

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

0

21

2

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

0

64

2

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

0

100

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

284

3

ORDER BY 튜닝관련 문의

0

218

2

강의 질문 있습니다

0

134

2

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

0

482

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

454

2

WHERE A OR B 에서 인덱스 걸기

0

398

2

질문이있습니다.

1

329

1