分页查询优化
我们可以把分页排序的字段做成索引,然后通过子查询分页排序查询出rowid的方式来实现覆盖索引,从而达到直接从索引上获取排序后的rowid结果,最后再用原表join一下子查询,此时可以用到主键索引直接查找出结果。从而提高效率
select * from a inner join (select id from a where b=xxx ordre by b limit 500,0) k on a.id=k.id
join查询优化
join 查询分为NLJ和BNL
NLJ指的是从驱动表中取出需要连接的行的对应字段值,到被驱动表中查找,然后将查找出的结果集返回
BNL指的是将驱动表中需要连接的数据加载到join buffer中,然后将被驱动表的每一行拿出来跟join buffer中的驱动表记录进行对比,并得到结果集
当能使用索引的时候一般使用NLJ,没有索引使用的时候使用BNL
所以,我们尽可能把join的字段设置上索引,可以优化连接效率