1.首先创建测试数据,这里使用java代码for循环生成了55000条数据,生成速度太慢了。。
@GetMapping("/addIndex")
public void addIndex(){
for (int i=54988;i<=55000;i++){
studentMapper.add(i);
}
}
2.先测试未添加索引的sql查询语句,使用EXPLAIN分析这条sql语句。
最终查询时间为0.017s,使用的查询类型是ALL全表查询。
3.添加索引
已创建的表:
普通索引:不要求索引字段不能重复
alter table t_student
add index <索引名>(<字段名>);
唯一索引:要求索引字段的值不能重复,但是可以为空值
alter table t_student
add index <索引名>(<字段名>);
4.删除索引
drop index <索引名> on <表名>
5.测试加了索引的查询
可以看到,rows显示的是MySQL认为它执行查询时必须检查的行数为1行,并且用到了我们添加的索引key。