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

取出記錄很久,有什麼方法解決

尚未結案
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-17 12:07:57 IP:203.198.xxx.xxx 未訂閱
我用Delphi 5 ADO MS-SQL 我在databse有個table有40000多筆記錄,如果用table.open 要等成12秒, 有什麼方法可以把時間縮短
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-17 13:32:29 IP:61.71.xxx.xxx 未訂閱
引言: 我用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-17 15:03:09 IP:203.198.xxx.xxx 未訂閱
引言: 不管那一種資料庫, 如果用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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-17 16:59:26 IP:61.218.xxx.xxx 未訂閱
hi,SuperLowB: (1)用TQuery之類的元件,不要用TTable (2)善用資料庫,在適當的欄位加建index,配合SQL指令,會讓你抓取資料庫的時間更快
pedro
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-17 17:27:39 IP:210.61.xxx.xxx 未訂閱
hi SuperLowB  但千萬不要用LOCATE或LAST, 否則仍會造成所有記錄下載的情況可給例子嗎? 也許您用TQUERY DBGrid實做看看就知道效能如何?40000多筆記錄不使用Locate和使用locate會有很大的差異, 在不使用locate時(尋找資料), 就如PD大大所言不會一次全部CACHE LOCAL PC....
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-04 11:23:44 IP:210.64.xxx.xxx 未訂閱
以上各位大大的言論都很優,我想補充一下,最好是在畫面開啟的時候,先開一個查詢的功能,讓使用者先輸入他所需要的資料條件之後,再依照使用者的條件查出所需要的資料,這樣會比較好一點... Pillar Wang
------
Pillar Wang
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-04 12:58:00 IP:211.22.xxx.xxx 未訂閱
你所提的問題, 會有很多客觀的因素都會影響結果, 例如: 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-04 13:07:51 IP:220.130.xxx.xxx 未訂閱
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-05 09:51:53 IP:61.221.xxx.xxx 未訂閱
SuperLowB 你好: 個人建議 先建立一個 view 在MS-SQL 在下table.open 前先限定 資料筆數 反正一個畫面也容不下一百幾十筆 所以做一個[上30筆]跟一個[下30筆] 然後依照view 的index給他做輸出在畫面上 註:VIEW 是指先用sql語法建立40000多筆記錄存放在MS-SQL 的窗口
------
======================
昏睡~
不昏睡~
不由昏睡~
suda
一般會員


發表:17
回覆:63
積分:16
註冊:2002-05-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-05 10:34:24 IP:218.175.xxx.xxx 未訂閱
一個DataTable用兩個Tquery元件來組合,來一個處理有數個欄位的縱向索引(for locate or Preview),一個處理橫向的全欄位資料列,就像是 ado的Dynamic cursor
bruce
中階會員


發表:19
回覆:121
積分:83
註冊:2002-04-16

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-05 22:48:02 IP:218.164.xxx.xxx 未訂閱
4萬筆資料,您可以先show出keyword欄位資料就好,待使用者決定要看哪一筆,再show該筆資料的詳細內容,這樣也可以提高效率,因為兩顆眼睛一次也看不了這麼多吧。最有效率的資料展示,永遠是只給使用者目前需要的,給多了就浪費了。
kido
一般會員


發表:1
回覆:2
積分:0
註冊:2004-04-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-02-03 17:06:00 IP:211.21.xxx.xxx 未訂閱
若將屬性CursorLocation := clUseServer 這樣會不會比較快呢?
系統時間:2024-11-23 1:47:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!