尽量减少子表的数据量

新上线一个功能,在用户中心里面, 之前这个功能是在其他模板的, 因为并发访问量低,所以一直没有问题。

结果在用户中心首页里面就卡死了, 网站都快蹦了!!!

开始是因为我查询的量太大了,因为我预测一般这个功能的数据量不大,一次全查询出来,这样用户每次 操作的时候

不需要ajax了,提高了体验。

最后 是 SQL写不好, 子表查询的数据量太大了,而且并发量也多,所以出现了这个问题


本来SQL是这样的
select t.loanSign_id,t.tenderMoney,t.interest,lb.loanNumber,rr.preRepayDate,
rr.is_prepayment,rr.prepayment_min_day,rr.id,l.useDay 
    		 from ( select 
    		 sum(lc.tenderMoney) as tenderMoney,sum(lc.interest) as interest,lc.userbasicinfo_id,lc.loanSign_id 
    		 from loanrecord lc join loansign loan on lc.loanSign_id=loan.id WHERE loan.loanstate=3 
    		 group by lc.loanSign_id,lc.userbasicinfo_id 
    		 ) t join repaymentrecord rr on rr.loanSign_id=t.loanSign_id JOIN loansignbasics lb ON t.loanSign_id=lb.id 
    		  join loansign l on t.loanSign_id=l.id 
    		 WHERE  t.userbasicinfo_id = 93 AND rr.repayState IN (1,3) 
    		 ORDER BY rr.preRepayDate ASC,lb.loannumber ASC 


因为 子表 t 
( select 
    		 sum(lc.tenderMoney) as tenderMoney,sum(lc.interest) as interest,lc.userbasicinfo_id,lc.loanSign_id 
    		 from loanrecord lc join loansign loan on lc.loanSign_id=loan.id WHERE loan.loanstate=3 
    		 group by lc.loanSign_id,lc.userbasicinfo_id 
    		 ) t

没有加上 用户id 的 过滤,只在 where里面 过滤了,所以导致了这个问题

猜你喜欢

转载自my.oschina.net/u/2419285/blog/2878109