执行计划中,type为ALL,代表进行了全表扫描,扫描行数达到了26274308,所以执行时间为9.25秒,也是正常的。
那么如何优化?优化措施很简单,就是对查询列建立索引。如下, alter table instance_space_history add index idx_org1(org1); 看添加索引后的执行计划
Possible_keys为null,说明没有where条件时优化器无法通过索引检索数据;
但是看extra的信息 Using index,即从索引中获取数据,减少了读取的数据块的数量 。
最容易想到的优化方式,就是给where条件的字段加索引,添加索引语句如下: alter table t_material_image add index idx_material_type (material_type);
再来看执行计划
通过执行计划和测试结果看,的确是有效果的,但是走索引后的查询效率依然不能满足我们期望。 然后试着给material_type,material_id添加联合索引。 alter table t_material_image add index idx_material_id_type (material_type,material_id);