儘量減少子表的數據量

新上線一個功能,在用戶中心裏面, 之前這個功能是在其他模板的, 因爲併發訪問量低,所以一直沒有問題。

結果在用戶中心首頁裏面就卡死了, 網站都快蹦了!!!

開始是因爲我查詢的量太大了,因爲我預測一般這個功能的數據量不大,一次全查詢出來,這樣用戶每次 操作的時候

不需要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裏面 過濾了,所以導致了這個問題

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章