를 포함하지 않는 사용하면서 여기에 MySQL의에서 설명 명령의 출력 (이노) 인 '인덱스를 사용하여'말한다 :인덱스는 필수 필드
explain select * from multi_index_test_tbl_1 force index(`query_index_1`) where `text_field1`='0' order by `numeric_field2` desc limit 1000000;
+----+-------------+------------------------+------+---------------+---------------+---------+-------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------------------+------+---------------+---------------+---------+-------+----------+--------------------------+
| 1 | SIMPLE | multi_index_test_tbl_1 | ref | query_index_1 | query_index_1 | 386 | const | 53547628 | Using where; Using index |
+----+-------------+------------------------+------+---------------+---------------+---------+-------+----------+--------------------------+
테이블 multi_index_test_tbl_1
의 스키마는 다음과 같다 :
CREATE TABLE IF NOT EXISTS `multi_index_test_tbl_1`
(
`text_field1` varchar(128) NOT NULL,
`numeric_field1` float NOT NULL,
`numeric_field2` float NOT NULL,
`text_field2` varchar(128) NOT NULL,
PRIMARY KEY (`text_field1`,`numeric_field1`,`text_field2`),
KEY `query_index_1` (`text_field1`,`numeric_field2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
query_index_1
이 사용 된 것으로 보입니다. 그리고 '에'인덱스 사용 중 '이 나타나고 query_index_1
인덱스에는 multi_index_test_tbl_1
테이블의 모든 필드가 포함되지 않습니다.
는 MySQL의 문서를 말한다 때문에 그 : 인덱스를 사용
(JSON 속성 : using_index)
열 정보를 추가 할 필요없이 인덱스 트리에있는 정보만을 사용하여 테이블 에서 검색 실제 행을 읽으려고합니다. 이 전략은 쿼리가 단일 인덱스의 일부인 열만 사용하는 경우에 사용할 수 있습니다.
여기 정확히 무슨 일이 일어나고 있는지 혼란 스럽습니다.
@zerkms mysql doc은 '인덱스 사용'은 '인덱스의 정보 만 사용하여'검색된다는 의미입니다. – yeren1989
왜 테이블 스키마를 표시하지 않습니까? 왜 인덱스를 강요하고 왜 "그 인덱스를 사용할 것인가"라고 궁금해합니다. – Drew
@Drew 죄송합니다. 스키마를 추가했습니다. 그러나 질문은 : 공식 문서에 따르면, '인덱스 사용하기'는 인덱스가 사용되었음을 나타낼뿐만 아니라 실제 행 (따라서 클러스터 된 인덱스)이 사용되지 않는다는 것을 의미합니다. – yeren1989