水晶報表效能最佳化之道

來源:互聯網
上載者:User

目錄
一、在資料庫伺服器端執行紀錄選定,只傳輸篩選後的資料。
1、優勢
2、下推記錄選定 - 樣本
二、按需顯示資料,僅在需要的時候擷取並顯示需要的資料。
1、優勢
2、隱藏(深化完成)資料,按需顯示……
3、利用按需分配子報表……
三、在資料庫伺服器端處理分組和排序
1、優勢
2、在伺服器上執行多數處理並只將有關詳細資料推入您的電腦。
四、使用已儲存在報表裡的資料。
1、優勢
2、已儲存資料
3、將資料與報表一起儲存命令
----------------------------------
一、在資料庫伺服器端執行紀錄選定,只傳輸篩選後的資料。
1、優勢
(1)與資料庫伺服器的連線時間更短。
(2)從資料庫伺服器到用戶端傳輸的資料量更少。
(3)從資料庫伺服器到用戶端的傳輸時間更短。
(4)處理電腦上的報表所需的記憶體更少。

2、下推記錄選定 - 樣本
本樣本展示編寫可以下推到資料庫伺服器的記錄選定公式的好處。

在 Xtreme 樣本資料庫的訂單表中,有 2192 條記錄,其中訂單日期在 2001 年以前的有 181 條。假設您只想對這些記錄製表。一方面,可以使用下面的記錄選定公式:
Year ({訂單.訂單日期}) < 2001

產生的 SQL 查詢會將 2192 條記錄全部發送至 Crystal Reports,然後記錄選定公式將其減少到 181。要瞭解這一點,單擊“資料庫”菜單上的“顯示 SQL 查詢”,您會注意到 SQL 查詢沒有 WHERE 子句。這是因為 Crystal Reports 無法下推 WHERE 子句中的 Year ( ) 函數。

另一方面,下面的記錄選定公式產生相同的報表:
{訂單.訂單日期} < #Jan 1, 1997#

上面的第二條公式可在資料庫伺服器上執行,因此可以下推。所產生的 SQL 查詢僅將 181 條記錄發送到 Crystal Reports。因此,在由 Crystal Reports 對記錄選定評估公式時,無須進一步消除記錄。單擊“資料庫”菜單上的“顯示 SQL 查詢”,您會注意到所產生的 SQL 查詢中有 WHERE 子句。

如本樣本所示,在改進記錄選定公式後,報表的處理速度提高了。在本例中,兩個公式產生相同的報表,但第二個公式利用了資料庫伺服器在處理其資料時可以使用的功能和最佳化。

提示:    請參閱題為“記錄選定效能提示”一節,瞭解其他有關資訊和設定記錄選定請求時的限制。

若要瞭解更多有關編寫高效的記錄選定公式的資訊,務請閱讀本節的其餘部分:使用增強記錄選定公式。

注意:    如果您不熟悉記錄選定公式,可以先從“選擇專家”或記錄選定公式樣本模板開始學起。有關更多細節以及對記錄選定的介紹,請參閱選擇記錄。
----------------------------------
二、按需顯示資料,僅在需要的時候擷取並顯示需要的資料。
1、優勢
(1)只傳輸當前需要的資料。
(2)與資料庫伺服器的連線時間更短。
(3)從資料庫伺服器到用戶端傳輸的資料量更少。
(4)從資料庫伺服器到用戶端的傳輸時間更短。
(5)處理電腦上的報表所需的記憶體更少。

2、隱藏(深化完成)資料,按需顯示……
隱藏(深化完成)結合在伺服器上分組 - 樣本
以下樣本描述了一個典型的製表方案,對於該方案,在伺服器上分組可顯著減少資料庫伺服器的不必要的資料轉送。

開啟樣本報表 Group.rpt(位於 Feature Examples 檔案夾)。
查看 Crystal Reports 視窗的右下角,可以注意到有 269 條記錄返回給此報表。

注意:    只有在“視圖”菜單中選中“狀態列”選項才會看到此數字。

在“報表”菜單中,單擊“節專家”開啟“節專家”。
在“節”列表中,選擇“詳細資料”。
在“公用”選項卡中,選擇“隱藏(深化完成)”。這會隱藏報表的“詳細資料”節,從而在報表中僅顯示組頁首。(在這種情況下,報表按“省/地區”分組。)
單擊“節專家”中的“確定”。“詳細資料”記錄會從報表中消失。
按 F5 鍵重新整理報表資料(或單擊工具列中的[重新整理] 按鈕)。
可以看到,即使從視圖中隱藏“詳細資料”記錄,仍為報表返回了 269 條記錄。

在“資料庫”菜單中,單擊“在伺服器上執行分組”。
現在可以看到僅有 71 條記錄返回給報表。(按“省/地區”)分組已在伺服器上執行完畢,這樣,傳輸給報表的記錄就更少。

雙擊報表對某個省/地區進行深化。
提示:    當可以執行深化時,游標會變成一個放大鏡。

Crystal Reports 將根據您的需要檢索相應的“詳細資料”記錄。

例如,如果對澳大利亞進行深化,Crystal Reports 會迅速檢索構成該組的七條記錄。

通過隱藏此報表的“詳細資料”記錄,您已為使用者建立了易於瀏覽的匯總報表。每個使用者可先定位他或她關注的省/地區,然後進行深化以檢索有價值的詳細資料。

此外,通過啟用“在伺服器上執行分組”選項,您已確保初始處理在資料庫伺服器上完成。此後,僅為報表傳輸必要的記錄。

有關伺服器端處理的更多資訊,請參閱伺服器端處理。

3、利用按需分配子報表……
如果報表有處理大量記錄的節,則可以將該節放入按需分配子報表中。按需分配子報表在主報表中以超級連結的形式出現。在開啟主報表時,不會檢索按需分配子報表的任何資料,直到深化相應的超級連結為止。

例如,在設計報表顯示每個僱員對於每種產品和每種產品類型的季度銷售額時,可能還希望通過包含每周銷售資訊來跟蹤每個僱員的進展情況。但是,查看該報表的很多使用者可能不會對此類額外的資料感興趣。在此類情況下,可將報表的每周銷售部分提取出來,將其作為按需分配子報表附加到報表中。僅當使用者在該按需分配子報表上深化時,才會從資料庫檢索有關每周銷售情況的詳細資料。

很多報表對象(如大型交叉表、OLAP 網格、進階圖表和地圖)都是可以包含到按需分配子報表中的理想候選對象,以使對象在深化之前不會被處理。

若要插入一個按需分配子報表,請參閱插入子報表和建立按需要顯示子報表。

提示:    也可以將此類報表對象放入使用“在伺服器上執行分組”選項的報表的隱藏“詳細資料”部分中。這樣做時,資料庫伺服器執行大部分處理任務,而且只將記錄的子集從伺服器傳輸到本機電腦(其他記錄則在您深化到隱藏的節時檢索)。
----------------------------------
三、在資料庫伺服器端處理分組和排序
1、優勢
(1)與資料庫伺服器的連線時間更短。
(2)從資料庫伺服器到用戶端傳輸的資料量更少。
(3)從資料庫伺服器到用戶端的傳輸時間更短。
(4)處理電腦上的報表所需的記憶體更少。

2、在伺服器上執行多數處理並只將有關詳細資料推入您的電腦。
伺服器端處理使您得以建立報表,以在伺服器上執行多數處理並只將有關詳細資料推入您的電腦。

伺服器端處理是這樣運作的:通過使用 SQL 傳遞技術將 SQL 陳述式發送到資料庫伺服器並檢索初始資料集,Crystal Reports 將很多資料檢索和排序工作卸載到伺服器系統上,從而釋放了本地記憶體和資源以用於更重要的任務。這就是為什麼伺服器端處理只處理已排序和分組的報表,如果報表沒有排序和分組(例如,如果是一個簡單的列表報表),則無法推入伺服器進行處理。還應注意伺服器端處理只處理基於 SQL 資料來源的報表。

注意:
該說明僅適用於將分組和排序卸載到伺服器的情況。
將分組推入到伺服器進行處理時,所需的臨時資料庫可能會使用大量伺服器資源。

請記住:若要在伺服器上執行分組,報表必須符合下列條件:
啟用了“在伺服器上執行分組”選項(位於“選項”對話方塊中)。有關更多資訊,請參閱啟用伺服器端處理。
報表使用某種分組形式。
報表至少是部分隱藏的(至少“詳細資料”節一定是隱藏的)。由於伺服器將處理那些隱藏的節,所以報表的可視部分越大,必須在用戶端進行的處理量就越大。如果顯示“詳細資料”節,將無法進行伺服器端處理。
有些情況下,必須在用戶端處理公式欄位。如果分組基於公式欄位,或者如果公式用於彙總欄位中,則必須將所有記錄都傳輸到用戶端後才能對評估公式。這將增加運行報表所需的時間量。因此,可能需要使用 SQL 運算式作為公式的替代物。
注意:記錄選定公式是個例外,它可以被推入伺服器。
為了在伺服器上處理報表,出現在報表中的任何運行總計必須基於彙總欄位(因為運行總計所需的資料將被拉到用戶端)。
為了在伺服器上處理報表,報表一定不能包含平均或非重複計數匯總。
報表不包含指定的值分組。

注意:
當深化報表中的隱藏節時,隨著在伺服器上進行的處理,將自動啟動與伺服器的串連。如果斷開從用戶端到伺服器的串連(例如,如果將報表下載到攜帶型電腦中並從遠程位置進行處理),則對資料的深化將因資料庫不可用而產生錯誤。
如果使用“用報表儲存資料”選項儲存已在伺服器上部分處理的報表,程式將只儲存那些已傳輸到用戶端的記錄。換言之,如果已深化了某個隱藏節,並且在 Crystal Reports 中有用於那些資料的選項卡(表示那些資料已傳輸),則將用報表儲存那些記錄。
----------------------------------
四、使用已儲存在報表裡的資料。
1、優勢
(1)與資料庫伺服器無串連。
(2)從資料庫伺服器到用戶端無需任何資料轉送。
(3)從資料庫伺服器到用戶端無需任何傳輸時間。

2、已儲存資料
帶有已儲存資料的報表用於處理不經常更新的資料。當使用者瀏覽帶有已儲存資料的報表並對列或圖表深化以查看細節時,他們不直接存取資料庫伺服器;相反,他們訪問的是已儲存的資料。因此,帶有已儲存資料的報表不僅將網路資料轉送量降到最低,而且還減輕了資料庫伺服器的負擔。

您可以從 Crystal Enterprise 內部調度這些報表,使其自動從資料庫定時重新整理。例如,如果銷售資料庫每天或每周只更新一次,那麼可按相似的進度運行報表並將其與資料一同儲存。這樣,銷售代表就總能使用當前的銷售資料,而不必在每次開啟報表時訪問資料庫。或者,您也可以根據需要來重新整理帶有已儲存資料的報表。

若要儲存帶有資料的報表,首先要確保在[檔案] 功能表中選中“隨報表儲存資料”選項,然後儲存報表。

3、將資料與報表一起儲存命令
如果打算過一段時間再次使用所建立的報表(例如精確調整它),或者打算與無法訪問未經處理資料的其他人共用報表,請使用“將資料與報表一起儲存”命令。

通常情況下,當儲存報表時,程式儲存報表定義及其基礎資料。報表定義包含列印報表所需的所有資訊。這些資料是運行報表時未經處理資料的快照。如果通過[檔案] 功能表上的選項命令清除“將資料與報表一起儲存”選項,則程式僅儲存報表定義。每次運行報表時必須重新整理資料。請參閱重新整理報表資料命令。若要為當前報表選擇該選項,請使用該命令。

在使用“將資料與報表一起儲存”命令前需考慮一些事情。

如果僅儲存報表定義,則需要較少的磁碟空間(僅夠模板使用),但程式在列印報表前需要檢索資料。
如果與報表一起儲存資料,則報表需要較多的磁碟空間(足夠供報表範本和資料使用),但程式在列印報表前無需檢索資料。
根據需要在開或關之間切換該命令。預設情況下,該選項設定為開。若要更改預設設定,請從[檔案] 功能表中選擇選項命令,並在“建立報表”選項卡(“選項”對話方塊)對話方塊出現後選擇其中的“將資料與報表一起儲存”選項。

注意:當程式將資料與報表一起儲存時,會壓縮資料以減少所佔用的磁碟空間。開啟報表時將解壓縮資料。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.