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

有關SQL 及程式之效率

尚未結案
hkguy80
一般會員


發表:20
回覆:21
積分:8
註冊:2004-09-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-19 16:38:56 IP:218.189.xxx.xxx 未訂閱
我已寫了一個 程式作計糧之用. 問題是程式會以loop 的形式查詢database. 想請問轉作一句Query 再用 while not adoqry.eof do 會否有顯著的速度改善? 如是者,徜若我要 10 個員工 資料, 其staffId 並不順序. 是否要用 loop 行 10 次select statement 呢? 可否只行一次select statement 呢? e.g select * from Staff where staffId ='a' or staffid ='e' ..... 那種方法效率更佳? 謝謝!
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-19 16:54:16 IP:61.70.xxx.xxx 未訂閱
您好: 建議您將SQL指令組合起來一次送出比較好,當您分10次Query時,會變成程式會做10次連線再斷線的動作,比一次將結果抓回來做處理,效能差滿多的.
P.D.
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-20 09:49:30 IP:61.71.xxx.xxx 未訂閱
引言: 我已寫了一個 程式作計糧之用. 問題是程式會以loop 的形式查詢database. 想請問轉作一句Query 再用 while not adoqry.eof do 會否有顯著的速度改善? 如是者,徜若我要 10 個員工 資料, 其staffId 並不順序. 是否要用 loop 行 10 次select statement 呢? 可否只行一次select statement 呢? e.g select * from Staff where staffId ='a' or staffid ='e' ..... 那種方法效率更佳? 謝謝!
由於使用sql語法, 系統是把sql語法送到server端(不管是單機或server)後 再去解譯sql語法->執行->送回執行結果到原來發送指令的電腦 所以你用10次loop去做, 我們把server要做的事分解至少要4段 (傳送->解譯->執行->送回), 也就是10*4=40次, 因此如果你要查詢的員工 能夠找一個可以具有同一條件如部門來設定條件 select * from xxxxx where deptno='人事' or deptno='品管' 這樣就可以 讓server找到符合條件然後一次送回到grid中來查詢
hkguy80
一般會員


發表:20
回覆:21
積分:8
註冊:2004-09-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-20 13:32:19 IP:218.189.xxx.xxx 未訂閱
謝謝兩位的回覆 我想supman 應該比P.D.更需要分數作鼓勵吧!
P.D.
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-20 23:06:23 IP:61.71.xxx.xxx 未訂閱
引言: 謝謝兩位的回覆 我想supman 應該比P.D.更需要分數作鼓勵吧!
回答問題並不是想得到分數, 因為ktop也讓我收獲不少, 所以有時候會想把自己的經驗分享而已, 不會介意!
系統時間:2024-06-26 7:21:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!