mysql 인덱스가 btree 로 되어있을시에 정렬이 되어있는게 아닌가요?

kws4679의 이미지

안녕하세요 컴퓨터 초보입니다

mysql 인덱스걸려있으면 인덱스 자체가 정렬되어있으므로

인덱스를 타고 찾을때는 특히 limit 걸어주었을때에는

리미트 한만큼만 레코드를 훑어보면 되지 않나요?

explain 하면 왜 자꾸 모든 열을 훑어보는지 궁금합니다!!
/??
(explain 시에 나오는 rows 가 실제로 훑어본 레코드 열의 개수인게 맞는거죠???)

세이군의 이미지

대부분 인덱스와 검색 쿼리 사이의 불일치 때문입니다.

인덱스로 PK1, PK2를 걸어두고 있는데 검색 쿼리로 select * from mytable where PK2; 라고 보내면 모든 열을 훑어 봅니다.
왜냐하면 PK2에는 인덱스가 걸려있지 않기 때문이지요.
인덱스를 타고 찾으려면 select * from mytable where PK1= 'condition1; and PK2 = 'condition2'; 와 같은 식으로 쿼리가 작성되어야 합니다.

인덱스가 걸려있는 키와 순서가 where 절 뒤에 있는 부분과 맞아야 인덱스를 타는 검색이 이뤄집니다.