首页 > 技术文章 > 利用延迟关联或者子查询优化超多分页场景

allenli263 2017-08-15 17:55 原文

什么是延迟关联

使用索引查询出来数据,之后把查询结果和同一张表中数据进行连接查询,进而提高查询速度!

create table smth1 (
   id int auto_increment ,
   ver int(11) default null,
   content varchar(1000) not null,
   intro varchar(1000) not null,
   primary key(id),
   key idver(id,ver)
)engine = innodb default charset = utf8;

 

create procedure smthTest1()
begin
  declare num int default 100001;
  while num < 1000000 do
  set num := num +1;
  insert into smth1 values (num ,num,'我是*****','我是谁');
  end while ;
end;

 

可见随着查询page 变大,时间会越来越大!

优化方案:先利用索引查询出来数据,再进行联合查询

 

 效率提高了一个量级

此外,还会想到用in来查询而不是子查询,为什么不用in,使用in会先查询出来一条id,之后再去和下面进行匹配,会进行smth1进行全表扫描!

 

参考文档:http://www.linuxidc.com/Linux/2014-11/109441.htm

 

推荐阅读