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

客戶資料維護編輯太慢?

答題得分者是:P.D.
pedro
尊榮會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-05 15:32:43 IP:210.61.xxx.xxx 未訂閱
我的表單由ADOQuery直接連到SQL Server select 所有筆數的資料, 後端有110430筆 然後在開啟表單時, 會延遲一段時間 現在我的想法是 如果在開啟時, 我直接從server只調回來最後一筆 然後等按Navigator時再調對應筆數的資料 問題是假設如此要怎麼實作 及下sql command呢 請先進提些意見, 讓我參考 謝謝
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-06 20:34:23 IP:61.66.xxx.xxx 未訂閱
引言: 我的表單由ADOQuery直接連到SQL Server select 所有筆數的資料, 後端有110430筆 然後在開啟表單時, 會延遲一段時間 現在我的想法是 如果在開啟時, 我直接從server只調回來最後一筆 然後等按Navigator時再調對應筆數的資料 問題是假設如此要怎麼實作 及下sql command呢 請先進提些意見, 讓我參考 謝謝
如果你要調最後一筆可以這樣 select top 1 * from [Tablename] where [condititon] order by [fieldname] desc 不過 order 的 fieldname要有index, 否則不會快 發表人 - P.D. 於 2003/09/06 20:36:04
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-07 10:37:21 IP:211.76.xxx.xxx 未訂閱
另一種做法,參考看看,不一定比較好,試驗看看囉 1.一開始只select 客戶編號和客戶名稱... 2.當焦點在這個客戶編號時,例如tdataset的afterscroll事件時,再去開一個query,select這個客戶編號的所有欄位.. 發表人 - hahalin 於 2003/09/07 10:39:04
pedro
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-09 09:26:10 IP:210.61.xxx.xxx 未訂閱
謝謝兩位前輩的指導 select 所有欄位和所有筆數是11秒, 若只是select 編號和名稱是2秒 可是若我有20 client同一時間select, 那麼肯定會delay不只是2秒 後來我想想, 何不乾脆一開始只 select top 0(這是為了可以進入append模式), 然後等user輸入查詢條件調出資料再進入編輯(如此就縮小筆數範圍) 如此一打開這個表單, 絲毫感覺不出停頓, 但缺點是一開始無法瀏覽資料, 只能等查詢之後才能(更改作業流程) 不知道有無更好的辦法 請前輩指導 >如果你要調最後一筆可以這樣 >select top 1 * from [Tablename] where [condititon] order by 不過 >1.一開始只select 客戶編號和客戶名稱... >2.當焦點在這個客戶編號時,例如tdataset的afterscroll事件時,再去開一個
P.D.
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-09 15:02:17 IP:61.66.xxx.xxx 未訂閱
引言: 謝謝兩位前輩的指導 select 所有欄位和所有筆數是11秒, 若只是select 編號和名稱是2秒 可是若我有20 client同一時間select, 那麼肯定會delay不只是2秒 後來我想想, 何不乾脆一開始只 select top 0(這是為了可以進入append模式), 然後等user輸入查詢條件調出資料再進入編輯(如此就縮小筆數範圍) 如此一打開這個表單, 絲毫感覺不出停頓, 但缺點是一開始無法瀏覽資料, 只能等查詢之後才能(更改作業流程) 不知道有無更好的辦法 請前輩指導
那你這樣做 select top n 編號, 名稱 from 資料表 即可 n 由你自己決定 原因, 不下 where 減少搜尋時間, 應可加快, 但如果你要求回應時間很嚴苛的話, 那建議就不要用dbgrid來顯示資料, 在未下查詢條件之前, 這樣根本也就沒有前段耗時的問題了!
miller680523
一般會員


發表:47
回覆:49
積分:19
註冊:2002-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-09 15:19:03 IP:61.218.xxx.xxx 未訂閱
還是你可以,先將select敘述寫成,store procedure,在第一次開啟表單時call store procedure,然後在作後續的動作,這樣應該可以決解開啟表單過慢的情形    
引言: 謝謝兩位前輩的指導 select 所有欄位和所有筆數是11秒, 若只是select 編號和名稱是2秒 可是若我有20 client同一時間select, 那麼肯定會delay不只是2秒 後來我想想, 何不乾脆一開始只 select top 0(這是為了可以進入append模式), 然後等user輸入查詢條件調出資料再進入編輯(如此就縮小筆數範圍) 如此一打開這個表單, 絲毫感覺不出停頓, 但缺點是一開始無法瀏覽資料, 只能等查詢之後才能(更改作業流程) 不知道有無更好的辦法 請前輩指導 >如果你要調最後一筆可以這樣 >select top 1 * from [Tablename] where [condititon] order by 不過 >1.一開始只select 客戶編號和客戶名稱... >2.當焦點在這個客戶編號時,例如tdataset的afterscroll事件時,再去開一個
t0922610976
一般會員


發表:11
回覆:16
積分:15
註冊:2003-09-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-10 10:50:03 IP:210.64.xxx.xxx 未訂閱
這是 ADO 的問題 建議您趕快改成 BDE 不然您自己可以作個小實驗試試看.... 結過案才知道結案很不容易... 試新技術的風險太高了.........
pedro
尊榮會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-10 12:11:53 IP:210.61.xxx.xxx 未訂閱
ADO app在佈署時候比BDE來的簡單, 而且BDE現在已經停止維護更新 而DBExpress又太新 只好先選ADO嘍 這在將來移到.Net可能會比較沒問題吧? 我現在使用select top 0 進入表單, 然後查詢調出資料, 選取客戶, 然後 進入編輯, 如此就節省向server要資料的量 現在新的問題是, 按Navigator上一筆及下一筆 我希望調出的是server的table裡的真正上下一筆 而不是查詢之後的範圍裡的上下一筆. 我以select .... where cusno=now-1 1 但資料庫裡的cusno並不連續, 中間有幾筆已經被砍調 是否有sql語法可真正調出上下一筆的關係, 不在乎 cusno是否連續與否 請前輩指導 >這是 ADO 的問題 >試新技術的風險太高了.........
P.D.
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-10 16:27:16 IP:61.66.xxx.xxx 未訂閱
引言: ADO app在佈署時候比BDE來的簡單, 而且BDE現在已經停止維護更新 而DBExpress又太新 只好先選ADO嘍 這在將來移到.Net可能會比較沒問題吧? 我現在使用select top 0 進入表單, 然後查詢調出資料, 選取客戶, 然後 進入編輯, 如此就節省向server要資料的量 現在新的問題是, 按Navigator上一筆及下一筆 我希望調出的是server的table裡的真正上下一筆 而不是查詢之後的範圍裡的上下一筆. 我以select .... where cusno=now-1 1 但資料庫裡的cusno並不連續, 中間有幾筆已經被砍調 是否有sql語法可真正調出上下一筆的關係, 不在乎 cusno是否連續與否 請前輩指導
SQL 中加上 order by "key值", 經過 order by 排序, 應可調出相關的順序
系統時間:2024-05-19 13:42:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!