:MySQL은 -이 쿼리가 인덱스를 사용하지 않는 이유 (설명에 따라)
EXPLAIN SELECT * FROM actions WHERE user_id = 17;
그리고 확실히이 출력보고 놀라게했다 :
를select_type SIMPLE
table actions
type ALL
possible_keys user_id
key null
key_len null
ref null
rows 6
extra Using where
내 이해는 색인이 조회에 사용되지 않는다는 것을 의미합니다. 맞습니까?
CREATE TABLE `actions` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
...
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1
왜이 키 값을 사용하지 않는 것 :
이 테이블 정의 (inpart)입니다 (단 6 행이 시간에 테이블에 총이 있지만 더 많은있을 것입니다) user_id에?
인덱스가 현재 사용되지 않는다는 사실은 향후 인덱스가 사용되지 않는다는 것을 의미하지 않습니다. – Karolis
아마도이 경우 6 행을 스캔하는 것이 더 빠를 것입니다. 수백 개의 행을 추가하면 어떨까요? –
@Karolis는별로 의미가 없습니다. 기본 키에 대한 쿼리는 6 개의 행이있는 경우에도 해당 인덱스를 사용합니다. – Will