单表访问方式range

lessons表,每行数据表示一门课程

单表访问方式range_第1张图片

 单表访问方式range_第2张图片

单表访问方式range_第3张图片

我们现在有一个需求,就是根据课程的开始时间和结束时间进行课程的筛选

执行Exaplain语句

EXPLAIN
SELECT id FROM lessons WHERE start_time > '2023-04-12 22:09:51.101'

可以查看到结果是全表扫描 

现在我们建立一个索引再试一下

 然后再查询一次

单表访问方式range_第4张图片

 可以看到,type此处显示了range,同时后面显示了Using index,原因就是查询的结果只是id,索引里面是包含id,也就是说,没有进行回表操作就满足了查询要求。 

我们现在除了查询id,还想查询一下课程name

EXPLAIN
SELECT id,name FROM lessons WHERE start_time > '2023-04-12 22:09:51.101'

 可以看到,我们还是使用了range方式,使用了index_start_time,同时后面Extra里面变成了Using index condition。使用了index_start_time索引,同时使用了回表去查询name这个字段。

Using where ,Using index:如果出现了Using index的话,说明不会进行回表操作了,需要的数据直接通过索引就可以拿到。

Using index condition:表示查询使用了索引条件来过滤数据。这意味着查询在索引层面上进行了部分数据过滤,但仍然需要回表来获取完整的数据。当看到"Using index condition"时,说明查询在索引层面上进行了一部分工作,但仍然需要进一步处理数据以满足其他条件。

你可能感兴趣的:(数学建模)