反饋已提交

網絡繁忙

巧用參數注入

一、概述

  1. 在實際應用會出現多資料集關聯報表,報表的展現速度會很慢,使用 SQL 語句關聯多個資料表又十分複雜。FineReport 提供【動態參數注入】功能,可加快報表的展現速度,又不用編寫複雜的 SQL 語句。

  2. 動態參數注入,是通過注入的值對資料庫中的資料進行操作的,只取對應的資料,從而提高報表的效能。本文將簡單對比【資料欄過濾】,【複雜 SQL】 和【動態參數注入】三種方法的展現效率。

注:動態參數注入只適用於【小資料量】的模板加快速度使用。大資料量的模板反而會降低載入速度。

       例如 4 萬筆資料注入到兩個資料集裡面,實際上會依次載入 8 萬筆資料,反而會變慢。

二、範本準備

1
資料欄過濾。
  1. 建立報表:建立兩個資料集,ds1:【SELECT * FROM 訂單】;ds2:【SELECT * FROM 訂單明細】報表樣式如下圖1所示。

  2. 設定過濾條件:選擇 D2 儲存格,對 D2 儲存格設定過濾條件,可選欄為【訂單 ID】,操作符為【等於】,對應儲存格為【A2】。如下圖2所示。

2
動態參數注入。
  1. 修改 SQL 語句:將上述範本中,資料集 ds2 的 SQL 語句,修改成:【SELECT * FROM 訂單明細 where 訂單ID =${orderid}】。將參數【orderid】預設值設定為訂單 ID 中的一個值,如:【10248】。如下圖1所示。

  2. 參數注入設定:雙擊原進行過濾的 D2 儲存格,在彈出資料欄對話框中,點選【動態參數注入】按鈕,彈出【動態參數注入對話框】。插入參數【orderid】,設定值為 【A2】儲存格,同時刪除過濾條件。如下圖2所示。

3
複雜 SQL 語句。
  1. 建立資料集,SQL 語句為: 【select a.訂單ID,訂購日期,到貨日期,發貨日期,產品ID,單價,數量,進價,折扣 from 訂單 a,訂單明細 b where a.訂單ID=b.訂單ID】。

  2. 報表樣式參考本文第二章第1節。

三、方法對比

1
資料欄過濾。
  1. 分頁預覽本文第二章第1節製作的報表,從日誌中可看出,是將第二個資料集中的資料全部取出了,如下圖所示。

注:若將資料全部取出會降低報表的效能,因此會降低報表的展現速度。

2
複雜 SQL。
  1. 若將兩個資料集定義成一個資料集,則 SQL 語句非常複雜,容易寫錯且難排查問題。

3
動態參數注入。
  1. 分頁預覽本文第二章第2節製作的報表,日誌中可看出每執行一欄就只是取出的對應訂單 ID 的那筆資料,如下圖所示。

四、總結

方式推薦使用場景
資料欄過濾當資料量較小時,可使用資料欄過濾進行設定。
複雜 SQL任意場景下均可使用,當資料量較大時推薦使用 新計算引擎。 
動態參數注入當資料量較小或適中時,建議使用參數注入功能,可以降低寫 SQL 的時間,並使得範本運作速度有所提升。


附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙