客戶資料維護編輯太慢? |
答題得分者是:P.D.
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 我的表單由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 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
謝謝兩位前輩的指導
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 發送簡訊給我 |
引言: 謝謝兩位前輩的指導 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 發送簡訊給我 |
還是你可以,先將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 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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 排序, 應可調出相關的順序 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |