大數(shù)據(jù)報(bào)表展現(xiàn)太慢了該怎么辦,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
報(bào)表要展現(xiàn) 100 多萬(wàn)數(shù)據(jù)得用分頁(yè)方式查詢了,如果是自己寫代碼開發(fā)的報(bào)表就再實(shí)現(xiàn)一下分頁(yè)查詢就可以,不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)機(jī)制不一樣,具體網(wǎng)上資料很多。
如果是用報(bào)表工具開發(fā)的報(bào)表,要看工具本身是否支持異步的分頁(yè)查詢,很多報(bào)表工具提供的還是常規(guī)分頁(yè)(假分頁(yè)),即一次性把數(shù)據(jù)加載到內(nèi)存,然后前端再分頁(yè)展示。
好一點(diǎn)的方式是用數(shù)據(jù)庫(kù)分頁(yè)機(jī)制來(lái)做,利用行號(hào)來(lái)過(guò)濾,但這種方式也有很多弊端,比如你會(huì)發(fā)現(xiàn)翻到后面會(huì)越來(lái)越慢,還有這個(gè)里面
大清單報(bào)表應(yīng)當(dāng)怎么做? 提到的一些問(wèn)題。
還有一種更好的方式,按照上面帖子里給出的思路。把取數(shù)和呈現(xiàn)做現(xiàn)兩個(gè)異步線程,取數(shù)線程發(fā)出 SQL 后就不斷取出數(shù)據(jù)后緩存到本地存儲(chǔ)中,呈現(xiàn)線程根據(jù)頁(yè)數(shù)計(jì)算出行數(shù)到本地緩存中去獲取數(shù)據(jù)顯示。這樣,只要已經(jīng)取過(guò)的數(shù)據(jù)就能快速呈現(xiàn),不會(huì)有等待感,還沒(méi)取到的數(shù)據(jù)需要等待一下也是正常可理解的;而取數(shù)線程只涉及一句 SQL,在數(shù)據(jù)庫(kù)中是同一個(gè)事務(wù),也不會(huì)有不一致的問(wèn)題。這樣,兩個(gè)問(wèn)題都能得到解決。不過(guò)這需要設(shè)計(jì)一種可以按行號(hào)隨機(jī)訪問(wèn)記錄的存儲(chǔ)格式,不然要靠遍歷把記錄數(shù)出來(lái),那反應(yīng)仍然會(huì)很遲鈍。
畫個(gè)圖感受感受:
②和③分別是兩個(gè)線程
看起來(lái)有點(diǎn)復(fù)雜,還是拿個(gè)做好的工具直接用吧:
海量清單與分組報(bào)表的實(shí)現(xiàn)
還能導(dǎo)出 Excel,也能打印。
看完上述內(nèi)容,你們掌握大數(shù)據(jù)報(bào)表展現(xiàn)太慢了該怎么辦的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!