全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1150
推到 Plurk!
推到 Facebook!

FastReport如何加快列印速度

尚未結案
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-17 16:07:32 IP:210.61.xxx.xxx 未訂閱
unit1->frReport1,frDBDataSet1,ADOQuery1 ADOQuery向後端sql server調 select * from cusmain 資料量為110436筆 SQL Query Analyzer調出來為六秒 可以reportPreview卻要四分鐘 請問前輩有無好辦法, 可以縮短產 生報表的時間? 謝謝 fastreport 2.51 d7 sql2000
kulius
一般會員


發表:13
回覆:23
積分:17
註冊:2002-03-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-10 11:05:32 IP:61.221.xxx.xxx 未訂閱
您好: 小弟也常為此事煩惱,到後來我直接使用FR中的DATASET來做資料庫連結 及存取TABLE,速度快了不少,希望對您有幫助
crispin2k
初階會員


發表:7
回覆:42
積分:33
註冊:2002-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-14 07:41:39 IP:61.70.xxx.xxx 未訂閱
引言: 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
系統時間:2024-04-30 2:37:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!