反饋已提交
網絡繁忙
在實際應用會出現多資料集聯動報表,報表的展現速度會很慢,使用 SQL 語句聯動多個資料表又十分複雜。FineReport 提供「動態參數注入」功能,可加快報表的展現速度,又不用編寫複雜的 SQL 語句。
動態參數注入,是透過注入的值對資料庫中的資料進行操作的,只取對應的資料,進而提高報表的效能。本文將簡單對比資料欄過濾,複雜 SQL 和動態參數注入三種方法的展現效率。
注:動態參數注入只適用於「小資料量」的範本加快速度使用。大數據量的範本反而會降低載入速度。
例如 4 萬筆資料注入到兩個資料集裏面,實際上會依次載入 8 萬筆資料,反而會變慢。
建立兩個資料集,ds1:SELECT * FROM 訂單;ds2:SELECT * FROM 訂單明細
報表樣式如下圖所示:
選擇 D2 儲存格,對 D2 儲存格設定過濾條件,可選列為訂單 ID,運算子為等於,對應儲存格為A2。如下圖所示:
將上述範本中,資料集 ds2 的 SQL 語句,修改成:SELECT * FROM 訂單明細 where 訂單ID =${orderid}
將參數orderid預設值設定為訂單 ID 中的一個值,如:10248
雙擊原進行過濾的 D2 儲存格,在彈出資料欄對話框中,點選「動態參數注入」按鈕,彈出「動態參數注入對話框」。
插入參數orderid,設定值為 A2儲存格,同時刪除過濾條件。如下圖所示:
建立資料集,SQL 語句為: select a.訂單ID,訂購日期,到貨日期,發貨日期,產品ID,單價,數量,進價,折扣 from 訂單 a,訂單明細 b where a.訂單ID=b.訂單ID
報表樣式參考本文 2.1.1 節。
分頁預覽本文 2.1 節制作的報表,從日誌中可看出,是將第二個資料集中的資料全部取出了,如下圖所示:
注:若將資料全部取出會降低報表的效能,因此會降低報表的展現速度。
若將兩個資料集定義成一個資料集,則 SQL 語句非常複雜,容易寫錯且難排查問題。
分頁預覽本文 2.2 節制作的報表,日誌中可看出每執行一行就只是取出的對應訂單 ID 的那筆資料,如下圖所示:
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙