강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

yhwjd のプロフィール画像
yhwjd

投稿した質問数

MySQLパフォーマンスの最適化

[実習] Trying Out a Covering Index

커버링 인덱스

作成

·

622

·

編集済み

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개만 있는데 어떻게 커버링 인덱스로 활용할 수 있는건가요?

sqlmysqldbms/rdbmsoptimizing

回答 2

1

yjm9505168574님의 프로필 이미지
yjm9505168574
インストラクター

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

 

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

 

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의 값도 조회하려면 커버링 인덱스만으로 안되고 테이블 스캔을 해야 되는게 아닌가요?

yjm9505168574님의 프로필 이미지
yjm9505168574
インストラクター

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

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

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

yhwjd님의 프로필 이미지
yhwjd
質問者

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

0

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

yhwjd のプロフィール画像
yhwjd

投稿した質問数

質問する