FastReport如何加快列印速度 |
尚未結案
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
kulius
一般會員 發表:13 回覆:23 積分:17 註冊:2002-03-15 發送簡訊給我 |
|
crispin2k
初階會員 發表:7 回覆:42 積分:33 註冊:2002-07-24 發送簡訊給我 |
引言: unit1->frReport1,frDBDataSet1,ADOQuery1 ADOQuery向後端sql server調 select * from cusmain 資料量為110436筆 SQL Query Analyzer調出來為六秒 可以reportPreview卻要四分鐘 請問前輩有無好辦法, 可以縮短產 生報表的時間? 謝謝 fastreport 2.51 d7 sql2000我想你誤解SQL Query Analyzer的速度所代表的意義,雖然SQL Server查詢出來的速度是六秒,但是在Client Server的架構中,這些資料必須送至Client端去製作報表,這一來一回之間必須耗掉不少的時間,尤其是在Ethernet的網路中,當用戶多的時候,網路封包發生碰撞的機會多(Ethernet採用Collision-Detect方式),速度自然也會降下來。不過還是有一些可以速度調整的技巧,例如您下的SQL指令是否最佳化,一般程式設計師常見的問題如下: 1.SELECT * FROM TableName WHERE condition_express 這個SQL指令你看起來並沒有錯誤,但是在Cilient/Server環境中,這樣的指令卻是影響執行效能的元兇之一。怎麼說呢? 假設TableName中有40個欄位,但是製作報表只要用到其中的10個欄位,SELECT *會將資料表的所有欄位資料都篩選出來,造成Server的負擔,另外當資料送至Client端時,Client端的資料庫引擎必須另外配置n筆資料乘上40個欄位的空間,這樣效能當然會整個下降下來。 資料傳輸量1 = n x 40 = 110436 x 40 資料傳輸量2 = n x 10 = 110436 x 10 您修改一下SQL指令,保證你速度提昇不少 2.能夠用SQL將資料篩選掉的,就不要用報表的Script來撰寫,因為報表的Script是採用直譯式,速度比較慢,另外也可以減少資料在網路傳輸的封包量。 3.另外,你也可以採用硬體的方式解決速度的問題,例如在網路架構中使用Switch取代Hub,以免各PC間的封包碰撞降低網路傳輸速度。 發表人 - crispin2k 於 2003/12/14 07:45:00 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |