MySQL键索引不工作,请使用where搜索所有行

MySQL键索引不工作,请使用where搜索所有行,mysql,key,Mysql,Key,所以基本上我创建了一个表: CREATE TABLE IF NOT EXISTS `student` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `campus` enum('CAMPUS1', 'CAMPUS2') NOT NULL, `fullname` char(32) NOT NULL, `gender` enum('MALE', 'FEMALE') NOT NULL, `birthday` ch

所以基本上我创建了一个表:

CREATE TABLE IF NOT EXISTS `student` (
    `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
    `campus` enum('CAMPUS1', 'CAMPUS2') NOT NULL,
    `fullname` char(32) NOT NULL,
    `gender` enum('MALE', 'FEMALE') NOT NULL,
    `birthday` char(16) NOT NULL,
    `phone` char(32) NOT NULL,
    `emergency` char(32) NOT NULL,
    `address` char(128) NOT NULL,

    PRIMARY KEY (`idx`),
    KEY `key_student` (`campus`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我在校园里有20排,只有12排

但当我使用查询时:
SELECT*fromstustwhere-campus='CAMPUS1'解释是这样的:

id  select_type   table   type  possible_keys  key  key_len  ref  rows  Extra
1   SIMPLE        student ALL   key_student    NULL NULL     NULL 20    Using where

我对这件事不熟悉,
是如何工作的?我阅读了文档,但理解不了那么多。

MySQL在决定使用哪个索引进行查询时,努力做到聪明(成功率各不相同)

在某些情况下,查询整个表比使用索引更快。例如:如果您的表中有
CAMPUS1
的500条记录和
CAMPUS2
的100条记录,则在查找
CAMPUS1'
时进行完整(600条记录)扫描会更快

当您只有20行时,您会遇到算法的边缘情况。尝试添加更多行,看看会发生什么


此外,该指数似乎会有一个非常低的值(2个值之间的平均分割)。它可能不会很有用

在这样一个小的表上,优化器可能认为扫描整个表比通过索引访问数据成本更低。