inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

117

zzzzz

작성한 질문수 192

0

CREATE INDEX idx_name ON users (name);

EXPLAIN SELECT * FROM users

ORDER BY name LIMIT 10; <- 이 부분에서 idx_name을 안쓰고 컬럼명만 작성했는데 어떻게 풀 인덱스 스캔을 썼는지 아는건가요?

 

sql mysql dbms/rdbms query-tuning

답변 2

0

JSCODE 박재성

안녕하세요 zzzzz님! 확실한 답변을 드리기 위해 질문 한가지만 드리도록 할게요~!!

 

이 부분에서 idx_name을 안쓰고 컬럼명만 작성했는데 어떻게 풀 인덱스 스캔을 썼는지 아는건가요?

-> 이 질문에서 SQL문에서 idx_name을 명시해서 안 썼는데 어떻게 인덱스를 활용했는 지가 궁금하신 게 맞으실까요~??

0

zzzzz

네~

0

JSCODE 박재성

CREATE INDEX idx_name ON users (name);

위 SQL문을 해석하자면 users 테이블의 name 컬럼에 대해

인덱스를 생성하는 명령어입니다.

이 때, 인덱스의 이름을 idx_name으로 지을 뿐이지,

실제로는 name 컬럼에 대해 인덱스가 생성됩니다!

 

이 때문에 아래 SQL문의 name 컬럼을 기준으로 인덱스를 활용하게 된 것입니다.

EXPLAIN SELECT * FROM users

ORDER BY name LIMIT 10;

 

여기서 이해 안 되시는 점 있으시면 추가로 댓글 달아주세요~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. zzzzz님이 제기하신 질문에 대해 답변 드리겠습니다.

이 상황은 SQL 쿼리에서 인덱스를 활용하는 방식과 관련된 질문입니다. EXPLAIN을 사용하여 쿼리 실행 계획을 확인할 때, 특정 인덱스를 명시적으로 지정하지 않았다 하더라도 MySQL은 데이터베이스에 생성된 인덱스를 자동으로 활용할 수 있습니다.

설명:

  1. 인덱스 자동 활용: MySQL은 쿼리를 최적화하기 위해 가능하다면 자동으로 테이블에 생성된 인덱스를 활용합니다. 이 경우 CREATE INDEX idx_name ON users (name); 구문에 의해 생성된 인덱스가 자동으로 사용될 확률이 높습니다. 즉, ORDER BY name 조건이 주어지면, name 컬럼에 대한 인덱스가 생성되어 있는 경우 MySQL은 이를 자동으로 식별하고 인덱스를 활용하여 정렬 작업을 효율적으로 수행합니다.

  2. 풀 테이블 스캔 vs 풀 인덱스 스캔: 풀 테이블 스캔 대신 인덱스를 통해 직접 데이터를 정렬할 수 있다면 MySQL은 이를 통해 성능을 개선합니다. LIMIT 조건도 추가되어 있으므로, 필요한 범위의 데이터만 제한적으로 읽어들이며 인덱스를 통한 풀이 가능합니다.

관련하여 인덱스와 실행 계획 최적화에 대한 추가 정보를 아래 링크에서 확인할 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

0

6

1

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

0

78

3

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

1

117

2

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

0

141

2

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

0

119

2

쿼리 튜닝 관련 질문 (limit)

0

117

1

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

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