MySQL의 테이블 구조체
MySQL의 범위 질의, 큰 사용 지수 판사 범위
그것은 나를 혼란스럽게 만들 MySQL의 쿼리 범위에 영향을 미치는 사용 지수 !!!!!!!!! 경우 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 간단한에서
MySQL의 테이블 구조체
MySQL의 범위 질의, 큰 사용 지수 판사 범위
그것은 나를 혼란스럽게 만들 MySQL의 쿼리 범위에 영향을 미치는 사용 지수 !!!!!!!!! 경우 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 간단한에서
, 내가 MySQL 데이터베이스가 EXPLAIN SELECT * FROM t_teacher_course_info WHERE teacher_id >1 and teacher_id < 5000
인덱스를 사용하는 실행 사용 INDEX `idx_teacher_id_last_update_time` (`teacher_id`, `last_update_time`)
하지만 경우 t_teacher_course_info ALL
1 SIMPLE 추가 변경 범위 EXPLAIN SELECT * FROM t_teacher_course_info WHERE teacher_id >1 and teacher_id < 10000
ID SELECT_TYPE 테이블 유형이 possible_keys 키있는 key_len 심판 행 idx_teacher_update_time 671082 사용 위치
모든 테이블을 스캔하고 인덱스를 사용하지 않습니다. ny mysql config 아마도 색인을 사용하는 경우 행 수를 판단 할 수 있습니다. !!!!!!!
그럴 수 있습니다. 그리고 그것은 실제로 최적화입니다. 보조 키 (예 INDEX(teacher_id)
)를 사용하는 경우
는 처리는 다음과 같이 진행한다 :
1
)을 찾은 다음 앞으로 스캔 (5000
또는 10000
까지)하는 것이 효율적입니다.SELECT *
). 여기에는 보조 키에 사본 인 PRIMARY KEY
이 사용됩니다. PK와 데이터는 함께 클러스터링됩니다. 하나의 PK 값에 의한 각 조회는 효율적 (다시, BTree)이지만, 5000 또는 10000을 수행해야합니다. 따라서 비용 (소요 시간)이 합산됩니다.A "테이블 스캔"(즉, 어떤 INDEX
를 사용하지 않음)는 다음과 같이 진행됩니다
WHERE
절 (teacher_id
의 범위)을 확인하십시오.20 % 이상의 테이블을 조사해야하는 경우 테이블 스캔은 실제로 보조 인덱스와 데이터간에 앞뒤로 튀는 것보다 빠릅니다.
따라서 "큰"은 약 20 % 정도입니다. 실제 값은 테이블 통계 등에 따라 다릅니다.
최하위 라인 : 최적화 도구를 사용하면됩니다. 가장 잘 아는 시간은입니다.
감사합니다. :) –
스크린 샷을 사용하는 대신 질문에 SQL을 추가하십시오. 또한 도움이 필요한 것이 무엇인지 보여주는 간결한 질문과 중단되는 코드를 보여주는 축소 버전을 포함하십시오. – Hans