1. 程式人生 > >效能優化-list巢狀list

效能優化-list巢狀list

功能是評價列表,抓包結果如上圖。每一行元素又巢狀“商品資訊”和圖片陣列。看下xx寫的主要邏輯。

 

最外層從mysql查詢到基本資料的列表,然後在for迴圈裡面再從db裡面查詢圖片列表和商品資訊。這個效能絕對不好。查了下rpc介面的時間:

如果只在db層,該如何優化呢。

1 今天一個同事提醒了下,查詢巢狀的資料時,可以取外面的outIds,然後查詢裡面的巢狀的資料時,使用in(:outIds).這樣就減少了連線資料庫的次數。然後獲取的資料再根據ID來匹配。單前提是資料庫沒有分表的話,

2 在資料庫的底層看就是表之間的巢狀,只能資料冗餘來實現。上面的例子,圖片評價列表儲存時,可以轉換為一個json物件,當做一個欄位儲存在最外層的表中。商品資訊類似的。這些冗餘的json物件的欄位一般情況僅僅是按業務需要的幾個欄位,一般都是個位數的一般都比原來物件對應的表的欄位少很多。

至於插入的時機,job定時跑還是呼叫儲存介面時看業務需求。及時性不高的話,job來執行。