取出記錄很久,有什麼方法解決 |
尚未結案
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 我用Delphi 5 ADO MS-SQL 我在databse有個table有40000多筆記錄,如果用table.open 要等成12秒, 有什麼方法可以把時間縮短不管那一種資料庫, 如果用TABLE型態來OPEN, 系統會全部下載到CACHE再作業 改用 QUERY同時設定條件, 一定可以縮短時間, 如果非得要取得全部資料, 也 建議你用 QUERY DBGRID 方式來顯示, 因為 DBGRID 一次顯示10筆, 則QUERY 也只會下載適當的筆數到畫面上, 等到切換畫面時再下載下一批, 我想你應不 致於全部的40000筆都要同時顯示到螢幕上吧! PS:但千萬不要用LOCATE或LAST, 否則仍會造成所有記錄下載的情況 |
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
引言: 不管那一種資料庫, 如果用TABLE型態來OPEN, 系統會全部下載到CACHE再作業 改用 QUERY同時設定條件, 一定可以縮短時間, 如果非得要取得全部資料, 也 建議你用 QUERY DBGRID 方式來顯示, 因為 DBGRID 一次顯示10筆, 則QUERY 也只會下載適當的筆數到畫面上, 等到切換畫面時再下載下一批, 我想你應不 致於全部的40000筆都要同時顯示到螢幕上吧! PS:但千萬不要用LOCATE或LAST, 否則仍會造成所有記錄下載的情況不是太明這句"但千萬不要用LOCATE或LAST, 否則仍會造成所有記錄下載的情況",可給例子嗎? 發表人 - superlowb 於 2004/08/17 15:04:33 |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
你所提的問題, 會有很多客觀的因素都會影響結果, 例如:
1.MSSQL Server 的效能與調校狀況如何?
2.網路的狀況如何?
3.連接參數的設定如何?
4.程式碼的撰寫處理如何?
5.所設計的 Table 結構每筆紀錄 Size 多大? 首先就 Client/Server 架構來說, 問有經驗的 Delphi 程式設計師絕對會建議改使用 Query 元件來處理. 在程式執行時不立刻開啟 Query, 而是在程式中加入設定條件的介面, 來產生 SQL While 的部份, 再去開啟 Query 以減少 Client 每次的讀取資料量. 這樣就算是有 100,000,000 筆紀錄. 只要 Client 處理得當. 就能運用自如. 我是雪龍
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
jbinfo
一般會員 發表:9 回覆:25 積分:16 註冊:2004-05-10 發送簡訊給我 |
SuperLowB兄,或許在你在Open時候,不要將資料Load進來,要做更新動作時,在依使用者的需求將資料Load進來,以下你可以參考一下,如有誤請多多包含:
procedure TForm1.FormActivate(Sender: TObject); var UseValue:String; begin //-->UserValue是使用者要更新的資料,看你需要在那更新資料,就在那填UserValue值 //-->如此一來,一開始就不會Load資料進來,在需要更新時,在即時將資料Load進來,以此類推 UserValue:='zzzzzzzzzzz'; with ADOQuery do begin Close; SQL.Clear; SQL.ADD(Format(' SELECT * FROM Table WHERE PK_Value=''%S''',[UserValue])); Open; end; end;祝你好運 |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
suda
一般會員 發表:17 回覆:63 積分:16 註冊:2002-05-10 發送簡訊給我 |
|
bruce
中階會員 發表:19 回覆:121 積分:83 註冊:2002-04-16 發送簡訊給我 |
|
kido
一般會員 發表:1 回覆:2 積分:0 註冊:2004-04-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |