[英]MySQL - Why doesn't this query use an index (according to explain)
我正在使用EXPLAIN并在以下简单查询上运行它:
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
我的理解是,这意味着在查询中没有使用索引,对吗? (此时,表中总共只有6行,但还会有更多行)
该表定义为(部分):
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
为什么不使用user_id上的键值?
有时,即使索引可用,MySQL也不使用索引。 这是与直接读取表相比需要更少的寻道时。 似乎只有6行,您就处于这种情况。
请记住,当您拥有更实际的数据集时,请定期运行OPTIMIZE TABLE和ANALYZE TABLE 。
如果您认为自己可以比优化程序做得更好,则可以使用“ 索引提示语法” 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.