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

ztigrdn8  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(263)

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

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排
但当我使用query时: SELECT * FROM student WHERE campus='CAMPUS1'; 这个 EXPLAIN 这是:

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

我是新来的,一个 KEY 真的有用吗?我看了文件,但我不能理解那么多。

wsxa1bj1

wsxa1bj11#

mysql在决定使用哪个索引进行查询时,正努力做到聪明(成功率参差不齐)。
在某些情况下,查询整个表比使用索引更快。e、 g:如果你的table上有500张 CAMPUS1 100张唱片 CAMPUS2 查找时进行完整(600条记录)扫描会更快 campus='CAMPUS1' .
当您只有20行时,您将遇到算法的边缘情况。尝试添加更多行,看看会发生什么。
而且,这个索引的基数似乎很低(只有2个值的偶数分裂)。它可能不会很有用。

相关问题