十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
今天給大家介紹一下讀CSV/TXT的報(bào)表怎樣做分頁查詢。文章的內(nèi)容小編覺得不錯(cuò),現(xiàn)在給大家分享一下,覺得有需要的朋友可以了解一下,希望對(duì)大家有所幫助,下面跟著小編的思路一起來閱讀吧。
創(chuàng)新互聯(lián)建站技術(shù)團(tuán)隊(duì)十載來致力于為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、高端網(wǎng)站設(shè)計(jì)、全網(wǎng)營銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了近千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
很容易想到的辦法是把文本數(shù)據(jù)灌到 RDB 里,利用數(shù)據(jù)庫分頁機(jī)制來做,但這樣做會(huì)對(duì)數(shù)據(jù)庫產(chǎn)生很大影響(容量和性能),畢竟要分頁查詢的數(shù)據(jù)量不會(huì)太小。而且如果 CSV/TXT 數(shù)據(jù)就是從數(shù)據(jù)庫導(dǎo)出去的,那這種方式基本就行不通了。
用 JAVA 硬寫也是一種辦法,就是比較麻煩,除了要能完成過濾、分組等集合運(yùn)算,還要考慮異步查詢的效率,如果通過行號(hào)(要遍歷數(shù)據(jù))確定每頁的查詢范圍,效率就非常低了;通過字節(jié)數(shù)來確定每頁要讀的數(shù)據(jù)會(huì)快很多,但要保證每次讀取的數(shù)據(jù)是整條的,如果讀出的最后一條數(shù)據(jù)被截?cái)啵小把a(bǔ)尾”機(jī)制,下一頁再讀的時(shí)候又要“去頭”,要考慮的問題比較多。
直接用支持文本分頁查詢的報(bào)表工具會(huì)比較簡單,比如這里介紹的實(shí)現(xiàn)過程: 海量清單與分組報(bào)表的實(shí)現(xiàn) ,用兩行腳本完成創(chuàng)建文件游標(biāo)和數(shù)據(jù)過濾,報(bào)表基于游標(biāo)完成異步分頁呈現(xiàn)。這里用了兩個(gè)異步線程,取數(shù)線程通過封裝好的文本接口返回查詢游標(biāo)將數(shù)據(jù)分批緩存到本地,呈現(xiàn)線程根據(jù)頁數(shù)計(jì)算出行數(shù)到本地緩存中去獲取數(shù)據(jù)顯示。這里已經(jīng)解決了翻頁效率和去頭補(bǔ)尾的問題。
畫個(gè)圖感受一下:
②和③分別是兩個(gè)線程,前者取數(shù)線程負(fù)責(zé)從文本里分批取數(shù)緩存,后者呈現(xiàn)線程負(fù)責(zé)讀緩存做報(bào)表呈現(xiàn)。
這樣做以后,除了報(bào)表能異步查詢外,還支持導(dǎo)出 Excel 和打印,比較方便。
以上就是讀CSV/TXT的報(bào)表怎樣做分頁查詢的全部內(nèi)容了,更多與讀CSV/TXT的報(bào)表怎樣做分頁查詢相關(guān)的內(nèi)容可以搜索創(chuàng)新互聯(lián)之前的文章或者瀏覽下面的文章進(jìn)行學(xué)習(xí)哈!相信小編會(huì)給大家增添更多知識(shí),希望大家能夠支持一下創(chuàng)新互聯(lián)!