为什么Mysql解释为下面的SQL语句使用索引而不是范围

为什么Mysql解释为下面的SQL语句使用索引而不是范围,mysql,Mysql,我有一张桌子: create table user ( id int primary key, name varchar(20) )engine=innodb; insert into user values(1,'lily'); insert into user values(2,'tom'); insert into user values(3,'bob'); insert into user values(4,'jimi'); insert into user values

我有一张桌子:

create table user (

id int primary key,

name varchar(20)

)engine=innodb;

insert into user values(1,'lily');

insert into user values(2,'tom');

insert into user values(3,'bob');

insert into user values(4,'jimi');

insert into user values(5,'moth');
如果我跑

explain select * from user where id in (1,2,3)

Mysql显示类型为range, 但在运行时:

 explain select id from user where id in (1,2,3)
Mysql显示类型为index
那么为什么会有这样的差异呢?

这里需要了解的关键是,对于如此小的表,MySQL可能不会选择使用任何索引,尽管有一个索引可以帮助查询计划更快地执行。实际上,您显示的两个查询都应该是可搜索的,MySQL应该能够使用
id
主键上的聚集索引。尝试添加更多数据,MySQL可能会使用索引扫描来满足查询。

我正在努力找出这些查询之间的差异确实,正如您所说,我向表中添加了大量数据以验证这一点。非常感谢。
 explain select id from user where id in (1,2,3)