反饋已提交

網絡繁忙

優化報表計算時間

1. 描述

完成報表取數後,設計器會對資料庫傳回的資料進行擴展、分組、列表、匯總等運算,好的範本製作習慣往往可以優化報表的計算時間。

2. 解決方案

2.1 空白儲存格應用

報表中,只要一個儲存格里有設定就會佔用一份記憶體,而空白的儲存格幾乎是不佔任何記憶體的。報表中由於佈局的需要,不可避免地會出現一些只起到佔位作用而無需其他的設定的儲存格;儘量將這些儲存格設成空白儲存格,這樣能夠有效的減少記憶體的佔用,加快報表的運算速度。

2.2 慎用隱藏行列

報表中為了進行一些複雜的運算,往往需用到隱藏行列來處理中間的運算,而這些隱藏行列中被用到的儲存格,往往只有一兩個格子,此時被隱藏行列中沒被用到的儲存格里有設定的話會額外浪費記憶體,因此建議把沒用的儲存格設為空白儲存格,減少記憶體的佔用,加快報表的運算速度。

2.3 慎用合併儲存格

報表中,常常會用到合併儲存格,合併儲存格的所有屬性都是儲存在左上角的格子中的,而合併區域中的其他被合併的儲存格,並不儲存任何屬性也不佔用記憶體。

雖然合併儲存格的應用能夠減少記憶體,不過因合併儲存格的運算涉及到多個儲存格間的主被動關係,所以運算比較複雜,反而會降低運算速度。因此,我們建議慎用合併儲存格,儘量將沒用的儲存格設成空白儲存格。

2.4 相同效果的條件屬性

同一行(列)中的儲存格需要設定相同效果的條件屬性時,只需在該行(列)中的某個儲存格設定一下條件屬性便可,這樣能夠加快報表的運算速度。如下圖,需要隱藏某行時只需要在一個儲存格中設定條件屬性即可,不要每個儲存格都設定。

2.5 相同效果的資料欄基本屬性設定

報表製作程式中,我們將資料集中的欄位拖入儲存格時,資料欄>基本>資料設定,(分組、列表、匯總)中計算最快的是列表。如製作明細表時有兩種設定方法,結果是一樣的。 

設定方式一:訂單 ID 列資料設定為列表,後面其他跟隨其擴展的資料欄的資料設定還是採用預設設定(即分組普通)。

設定方式二:訂單 ID 列資料設定為列表,後面其他跟隨其擴展的資料欄的資料設定也修改為列表。

上面兩種設計方式的資料展示結果是一樣的,不過報表的計算速度卻不一樣;第二種方式的報表計算速度明顯會比第一種快。

這是因為資料欄設為分組時,報表會將取出的資料進行一次分組聚集的計算,而不管資料有沒有重複。因此,對於可實現相同效果的應優先設定其資料欄屬性為列表。

2.6 父格設定

FineReport 中設計報表的最重要的思想,就是資料欄的擴展,而跟隨哪一個儲存格擴展是必須要注意的問題。所以父格的設定是很重要的,父格設定不恰當會影響報表的計算速度,甚至導致結果錯誤。另外,父子格層次樹高度,對報表效能也有影響,所以儘量減少父子格層次樹高度。如對下圖範本:

注:將所有儲存格的資料顯示方式設定為列表顯示。

設定方式一:是否已付父格為運貨費,運貨費父格為運貨商,運貨商父格為到貨日期,到貨日期父格為訂購日期,訂購日期父格為客戶 ID,客戶ID父格為訂單 ID,父子格層次樹為 6層。

設定方式二:是否已付、運貨費、運貨商、到貨日期、訂購日期、客戶 ID 的父格都為訂單 ID,父子格層次為 1 層。

上面兩種設計方式的資料展示結果是一樣的,不過報表的計算速度卻不一樣;第二種方式的報表計算速度明顯會比第一種快。

2.7 取消自動調整行高或列寬

若已設定自動調整列寬的話,那麼在報表展示前會先去計算儲存格中資料的寬度或高度,這樣就增加了報表的運算時間,所以儘量取消自動調整行高或列寬。被選儲存格,在右側列表中選擇儲存格屬性表-其他屬性,設定為不自動調整,如下圖:

2.8 優化過濾條件

查看範本中是否重複設定了過濾條件,刪除多餘的過濾條件,即若資料欄來自相同的資料集,只需在最左父格設定過濾條件並勾選將父格子作為過濾條件(預設是勾選的)即可。


附件列表


主題: 效能優化
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙