优化项目中树结构数据的操作
最近在優化一段代碼,前端使用的是Ext3,頁面中有一個樹形菜單。把項目放在本地跑,加載這個樹形菜單的速度似乎還湊合,但是在正式環境中點開這個頁面,這個樹形菜單加載的就很慢了,很明顯的感覺到卡殼了一下,于是去查看項目代碼,大致思路是這樣的,如下:
通過遞歸的方式不斷去執行一個SQL,這個SQL是select ... from tb_tree tt where tt.parent_id = ? 這樣的結構,將查出的數據拼成json串放前端Ext展示,表象看起來好像還行,思路相對還是比較清晰的。
但是,服務器放在了合肥,我在北京,每次這么遞歸查詢都相當于從北京向合肥發請求,這么一來肯定是要消耗時間的,好在表數據不算多,整體存放在表中的樹結構不算復雜,否則,難以想象。故優化勢在必行。
我想的方法比較直接,一次性查出所有數據,減少查庫的頻率,畢竟數據量也就那么200多條。表結構就是常規的id、text、parent_id這樣的,那我就想干脆通過Java構造一顆樹,就是將SQL的這棵樹轉成Java的樹,轉好之后拼個json串豈不是so easy
寫個樹的實體類,我就用了這么幾個屬性
//getter、setter方法
還有一個生成樹結構的工具類,里面有一個構造樹的函數
通過構造樹的方法將數據庫中的數據轉變為Java樹,再變成json格式交給Ext來處理就大功告成啦
經測試,代碼優化前生成的json串耗時332毫秒,優化后只有27毫秒
總結
以上是生活随笔為你收集整理的优化项目中树结构数据的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: socket技术难点
- 下一篇: Codeforces 919D - Su