SQL索引回表
当使用普通索引的时候,它会先在索引那查询所有符合条件的索引,然后再回到表中根据索引查询对应的数据出来。所以这里有两次查询表的过程,简称回表。
怎么避免回表
1、使用主键作为条件查询
2、如果必须使用辅助索引,那么尽量避免使用*
,直接列出所需列名。实际上就算使用主键作为条件查询,也应该尽量列出所需列名,需要什么字段就返回什么字段,而不是一股脑的直接返回*。
3、查询语句优化,实际也相当于变相使用主键作为条件查询
优化前:
select * from t_refund_record order by id limit 2000,10;
优化后:
select * from t_refund_record t1 join (select id from t_refund_record limit 2000,10) t2 on t1.id = t2.id;