场景1:全表count查询优化
select count(name) from user;
添加索引
alter table user add key(name);
能够利用索引覆盖提效。
场景2:列查询回表优化
select id,name,sex ... where name='shenjian';
若name为普通索引,sex没有建立索引,那么会发生回表,降低效率,为name和sex建立联合索引。(name,sex)避免回表。
场景3:分页查询
select id,name,sex ... order by name limit 500,100;
将普通索引name升级为联合索引(name, sex)也可以避免回表,提升效率。
总结:当查询sql中存在count(name),order by name,limit offset, limit时,若不建立索引,需要回表查询,访问磁盘非常耗时,所以建立索引能够提升性能。