優化項目中樹結構數據的操做

最近在優化一段代碼,前端使用的是Ext3,頁面中有一個樹形菜單。把項目放在本地跑,加載這個樹形菜單的速度彷佛還湊合,可是在正式環境中點開這個頁面,這個樹形菜單加載的就很慢了,很明顯的感受到卡殼了一下,因而去查看項目代碼,大體思路是這樣的,以下:前端

經過遞歸的方式不斷去執行一個SQL,這個SQL是select ... from tb_tree tt where tt.parent_id = ? 這樣的結構,將查出的數據拼成json串放前端Ext展現,表象看起來好像還行,思路相對仍是比較清晰的。數據庫

可是,服務器放在了合肥,我在北京,每次這麼遞歸查詢都至關於從北京向合肥發請求,這麼一來確定是要消耗時間的,好在表數據不算多,總體存放在表中的樹結構不算複雜,不然,不可思議。故優化勢在必行。json

我想的方法比較直接,一次性查出全部數據,減小查庫的頻率,畢竟數據量也就那麼200多條。表結構就是常規的id、text、parent_id這樣的,那我就想幹脆經過Java構造一顆樹,就是將SQL的這棵樹轉成Java的樹,轉好以後拼個json串豈不是so easy服務器

寫個樹的實體類,我就用了這麼幾個屬性函數

clipboard.png
//getter、setter方法工具

還有一個生成樹結構的工具類,裏面有一個構造樹的函數測試

clipboard.png

經過構造樹的方法將數據庫中的數據轉變爲Java樹,再變成json格式交給Ext來處理就大功告成啦優化

經測試,代碼優化前生成的json串耗時332毫秒,優化後只有27毫秒spa

相關文章
相關標籤/搜索