inflearn logo
강의

Course

Instructor

Young-han Kim's Practical Database - Basic Course

covering index

커버링 인덱스와 랜덤i/o 질문

72

joomg10039533

3 asked

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

primary key 로 where 절에 넣고 select 를 하면 key 에 primary 가 찍혀 효율적인 조회가 가능하다고 알고있습니다!

그런데 수업 내용에서 EXPLAIN SELECT item_id, price, item_name FROM items WHERE price BETWEEN 50000 AND 100000; 해당 쿼리를 사용하면 extra 에 Using index condition 나와 인덱스를 사용해서 구했다 < 까지는 이해가 가는데 여기서 item_id 라는 primary key 가 존재하는데 이거로 db 접글을 재시도하면 어째서 랜덤i/0가 발생하는건지 궁금합니다.

sql mysql dbms/rdbms SQLD

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

주민규님께서 질문하신 커버링 인덱스와 랜덤 I/O에 관한 내용은 데이터베이스 최적화의 중요한 부분입니다. 아래는 관련된 설명과 추가적인 정보입니다.

쿼리 성능과 랜덤 I/O

  1. 커버링 인덱스의 개념: 커버링 인덱스는 쿼리가 필요한 모든 데이터를 인덱스에서 바로 가져올 수 있을 때 사용됩니다. 즉, 테이블의 데이터 행을 참조할 필요가 없도록 만드는 인덱스입니다. 이렇게 되면 인덱스 내에서만 필요한 정보가 주어지기 때문에, 디스크 I/O를 최소화하여 성능이 향상됩니다.

  2. 랜덤 I/O 발생 상황: 주민규님께서 언급하신 예시에서 EXPLAIN 쿼리에 Using index condition이 나왔다는 것은 인덱스를 활용한 조회이지만, 선택한 컬럼들이 커버링 인덱스를 완전히 만족하지 않는다는 것을 의미합니다. item_id 컬럼은 Primary Key로 인덱스가 설정되어 있고, price도 인덱스가 있다 하더라도, EXPLAIN에서 Using index condition이 표시된다는 것은 인덱스에서 WHERE 조건은 처리하되, 선택된 컬럼들(item_id, price, item_name)이 인덱스만으로 커버되지 않아 원래 테이블 데이터를 읽기 위해 추가 디스크 접근(Random I/O)이 필요하다는 것을 뜻합니다.

이에 참고하실 내용으로 인프런 질문 게시판에는 인덱스 사용에 대한 질문이 있습니다!와 같은 관련 논의가 있습니다. 이러한 인덱스와 최적화 문제는 데이터베이스 설계 시 매우 주의가 필요합니다. 이와 같은 내용들은 실습을 통해 직접 경험하면서 이해도를 높이실 수 있습니다.

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

간단한 오타 제보입니다.

0

19

1

ON을 명시하지 않았을 경우 질문드립니다.

0

62

1

강의 2:53 union을썼는데도 션이 중복

0

60

1

where 대신 having을 써도 되나요?

0

83

1

주문 내역에 대한 고객 데이터

0

65

2

in 수행

0

45

1

외부조인1 강의 관련 질문

0

76

3

오타인거죠?

0

81

1

섹션 3 퀴즈 3번 문제

0

78

2

GROUP BY 기준 컬럼

0

88

1

질문이 있습니다

0

56

1

오타

0

83

2

실제 상용 서비스 질문

0

100

1

파티셔닝 관련 질문입니다.

0

61

1

join 문제 풀이2 문제1(self join) 질문

0

67

1

9. 인덱스2.pdf 중에서

0

80

1

문제 2번

0

68

2

문제와 풀이1 - 3번 문제

-1

72

2

잘 사용하진 않지만 풀 외부 조인을 사용하신 사례가 궁금합니다!

0

94

1

[58. 인덱스와 정렬]을 듣다가 질문입니다.

0

95

2

두개 이상의 테이블을 조인할때 인덱스 질문이 있습니다.

0

61

1

파일을 만드는 단위가 궁금해요

0

74

1

MySQL은 실무에서 사용하는 케이스도 있을까요?

0

84

1

JOIN 방향에 따른 결과 행수와 효율적 데이터 조회 방법 질문

0

79

1