讀 CSV/TXT 的報表怎麼做分頁查詢?
很容易想到的辦法是把文字資料灌到 RDB 裡,利用資料庫分頁機制來做,但這樣做會對資料庫產生很大影響(容量和效能),畢竟要分頁查詢的資料量不會太小。而且如果 CSV/TXT 資料就是從資料庫匯出去的,那這種方式基本就行不通了。
用 JAVA 硬寫也是一種辦法,就是比較麻煩,除了要能完成過濾、分組等集合運算,還要考慮非同步查詢的效率,如果透過行號(要遍歷資料)確定每頁的查詢範圍,效率就非常低了;透過位元組數來確定每頁要讀的資料會快很多,但要保證每次讀取的資料是整條的,如果讀出的最後一條資料被截斷,要有“補尾”機制,下一頁再讀的時候又要“去頭”,要考慮的問題比較多。
直接用支援文字分頁查詢的報表工具會比較簡單,比如這裡介紹的實現過程: ,用兩行指令碼完成建立檔案遊標和資料過濾,報表基於遊標完成非同步分頁呈現。這裡用了兩個非同步執行緒,取數執行緒透過封裝好的文字介面返回查詢遊標將資料分批快取到本地,呈現執行緒根據頁數計算出行數到本地快取中去獲取資料顯示。這裡已經解決了翻頁效率和去頭補尾的問題。
畫個圖感受一下:
②和③分別是兩個執行緒,前者取數執行緒負責從文字里分批取數快取,後者呈現執行緒負責讀快取做報表呈現。
這樣做以後,除了報表能非同步查詢外,還支援匯出 Excel 和列印,比較方便。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700007/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 報表怎麼做模糊查詢
- 報表連 hive,資料量比較大,怎麼分頁查詢?Hive
- 百億級資料分表後怎麼分頁查詢?
- 報表連 MongoDB,資料量大報表慢,怎麼做分頁?MongoDB
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 分庫分表後的分頁查詢
- 資料庫三表連線查詢怎麼做資料庫
- Hibernate分頁查詢原理解讀
- 資料量很大,分頁查詢很慢,該怎麼優化?優化
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- MySQL的分頁查詢MySql
- Oracle的分頁查詢Oracle
- Lucene的分頁查詢
- 報表的查詢皮膚怎麼顯示在左側?
- 億萬級分庫分表後如何進行跨表分頁查詢
- .NET ORM 分表分庫【到底】怎麼做?ORM
- hyperf 使用模型寫 union 子查詢並做分頁模型
- Elasticsearch 分頁查詢Elasticsearch
- ssh 分頁查詢
- oracle分頁查詢Oracle
- 資料分析報表怎麼做
- ThinkPhp框架:分頁查詢PHP框架
- 分頁查詢優化優化
- NET 集合分頁查詢
- MySQL 多表查詢分頁MySql
- 分頁查詢重構
- Oracle分頁查詢格式Oracle
- 頁面怎麼做點選表頭排序排序
- SSH框架下的分頁查詢框架
- ssh框架中的分頁查詢框架
- 分頁查詢的排序問題排序
- hibernate 通用分頁,查詢分頁的泛型類泛型
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- SQL 單表多條記錄分組查詢分頁程式碼SQL
- SAP RETAIL分配表的查詢報表AI
- indexdb實現分頁查詢Index
- AntDesignBlazor示例——分頁查詢Blazor
- MySQL分頁查詢優化MySql優化