利用延遲關聯或者子查詢優化超多分頁場景


什么是延遲關聯

使用索引查詢出來數據,之后把查詢結果和同一張表中數據進行連接查詢,進而提高查詢速度!

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM