• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

커버링 인덱스

24.01.17 00:17 작성 24.01.17 00:17 수정 조회수 258

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

질문자

2024.01.18

앗.. 잘 이해가 안되었습니다..
인덱스에는 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

질문자

2024.01.20

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

0

jjeong2585님의 프로필

jjeong2585

2024.04.15

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