1. 問題描述html
這樣一種報表:報表形式很是簡單,只是簡單的單數據源明細報表,可是數據量很是大,百萬、千萬甚至更多。報表取數及計算時間至關長。mysql
但願可以提升報表展現速度,對於用戶來講,查詢報表不會有滯後的感受。sql
解決方案提供工具:報表開發工具FineReport。數據庫
2. 解決方案瀏覽器
2.1 解決方案工具
對於單數據源明細報表,能夠啓用行引擎來執行報表,提升報表展現速度,優化用戶體驗。sqlserver
2.2 原理性能
普通報表:取出所有數據後再執行報表,最後返回總體的報表結果給瀏覽器,用戶訪問到看到結果的時間=報表取數時間+報表執行時間;開發工具
行引擎報表:邊取數邊執行報表,執行到哪頁用戶就能夠看到哪頁,用戶訪問到看到結果的時間=首頁數據讀取時間+首頁計算時間。優化
2.3 注意事項
行引擎報表注重的是性能,由原理咱們能夠想象,對於行引擎報表,每頁的計算必須是獨立的,即報表不能有單元格關聯的複雜運算,相似,爲了提升行引擎報表的性能,FR捨棄了一些複雜的功能:
行引擎報表只適用於單數據源、即單元格過濾不能使用,且必須是簡單明細表,同時也不支持計算、條件屬性等複雜報表功能。
3. 實現步驟
咱們以mysql數據庫爲例,將裏面的S訂單明細的數據用行式引擎顯示,每頁顯示30行,設置以下:
3.1 新建數據集
數據集ds1:SELECT * FROM S訂單明細。
3.2 模板主體設計
以下圖,將表中的列所有拖曳至模板主體中:
3.3 行式引擎設置
選擇模板>報表引擎屬性,勾選用行式的引擎來執行報表,再勾選下面的使用按頁運算分段執行報表,每頁記錄數使用默認值30,以下圖:
3.4 效果查看
點擊分頁預覽,效果以下:
行式引擎按頁取數只適用於Oracle,mysql,hsql和sqlserver2008及以上數據庫,其餘數據庫,如access,sqlserver2005等必須手動編寫分頁sql,才能實現按頁取數,對於須要編寫分頁sql的數據庫,請參考單數據源實現層式報表章節。
行式引擎只適用於單數據源報表,對於多數據集報表,行式引擎沒法實現對其進行分頁顯示,多數據源的層式報表的實現請查看多數據集實現層式報表。