인프런 커뮤니티 질문&답변

yhwjd님의 프로필 이미지
yhwjd

작성한 질문수

MySQL 성능 최적화

[실습] Trying Out a Covering Index

커버링 인덱스

작성

·

430

·

수정됨

0

실습 내용 질문 드립니다~!

CREATE INDEX idx_covering on orders(customer_id, order_date, total_amount);

 

select * from orders where customer_id = 25675 order by order_date desc limit 10;

 

4개의 컬럼 중 PK를 제외한 3개만 있는데 어떻게 커버링 인덱스로 활용할 수 있는건가요?

답변 2

1

여정민님의 프로필 이미지
여정민
지식공유자

안녕하세요~ 질문 주셔서 감사합니다.

 

커버링 인덱스는 인덱스 스캔만으로 결과가 나가는거에요. 인덱스 스캔 이후 추가적인 테이블 탐색이 필요가 없는거죠.

 

idx_covering 이라는 인덱스는 조회하는 SELECT 문에 필요한 모든 칼럼을 다 가지고 있으니까 커버링 인덱스가 적용이 되는겁니다. 인덱스 스캔만으로 결과가 나갈 수 있는거죠.

 

또 다른 질문 주시면 답변 드릴게요.

감사합니다.

 

yhwjd님의 프로필 이미지
yhwjd
질문자

앗.. 잘 이해가 안되었습니다..
인덱스에는 customer_id, order_date, total_amount 이렇게 3개의 컬럼이 있고
select * from orders의 결과는 order_id, customer_id, order_date, total_amount 4개여서 order_id의 값도 조회하려면 커버링 인덱스만으로 안되고 테이블 스캔을 해야 되는게 아닌가요?

여정민님의 프로필 이미지
여정민
지식공유자

order_id 와 같은 PK 값 들은 인덱스에 기본적으로 들어가있어요~

PK 값이 있어야 인덱스 스캔 후 실제 테이블 레코드에 엑세스 할 수 있기 때문에 인덱스에 포함되어 있는거에요.

더 공부해보고 싶으시면 Index Extension 이라는 키워드로 검색해서 보시면 될 것 같습니다.

yhwjd님의 프로필 이미지
yhwjd
질문자

아아 이해 했습니다. 감사합니당~!

0

똑같은 질문을 하러 왔는데, 정보 얻고 갑니다, 감사합니다,

yhwjd님의 프로필 이미지
yhwjd

작성한 질문수

질문하기