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

2个表之间的传输太慢了,如何解决?

尚未結案
lwd188
一般會員


發表:13
回覆:33
積分:9
註冊:2005-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-13 17:13:41 IP:218.25.xxx.xxx 未訂閱
还得麻烦各位前辈: 以下是我的一段代码:(我用的是Sccess数据库,用的Ado链接.现在有2个结构完全的数据库:一个是主本"局直管房数据库.mdb"另一个是"FB副本110.mdb",我想从副本里的表"户"往主本里的表"户"里传.主本数据库里的表"户",有12万条记录,一共是258M,副本是78M.一次传输下来得用3分多钟,太慢了,不知各位前辈有什么好办法,能快一些.表的一些属性我是这么设的:ADOQuery6.CursorLocation:=clUseServer;) procedure TForm1.Button3Click(Sender: TObject); var str,str1,str2,str3,id:string; begin str:= 'Select * Into bb in "c:/fcms/局直管房数据库.mdb" From 户'; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add(str); ADOQuery6.ExecSQL; if ComboBox5.Text='协议租金上传' then begin str:='update 户,bb set 户.协议计租月份=bb.协议计租月份,户.维修基金当月尾欠=bb.维修基金当月尾欠,'; str1:='户.维修基金本年尾欠=bb.维修基金本年尾欠,户.维修基金历年尾欠=bb.维修基金历年尾欠,户.维修基金本年尾欠收入=bb.维修基金本年尾欠收入,户.维修基金历年尾欠收入=bb.维修基金历年尾欠收入,户.协议租金当月尾欠=bb.协议租金当月尾欠,'; str2:='户.协议租金本年尾欠=bb.协议租金本年尾欠,户.协议租金历年尾欠=bb.协议租金历年尾欠,户.协议租金本年尾欠收入=bb.协议租金本年尾欠收入,户.协议租金历年尾欠收入=bb.协议租金历年尾欠收入'; str3:=' where (户.房籍号=bb.房籍号)'; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add(str); ADOQuery6.SQL.Add(str1); ADOQuery6.SQL.Add(str2); ADOQuery6.SQL.Add(str3); ADOQuery6.ExecSQL; end else begin str:='update 户,bb set 户.计租月份=bb.计租月份,户.公房租金当月尾欠=bb.公房租金当月尾欠,'; str1:='户.公房租金本年尾欠=bb.公房租金本年尾欠,户.公房租金历年尾欠=bb.公房租金历年尾欠,户.公房租金本年尾欠收入=bb.公房租金本年尾欠收入,户.公房租金历年尾欠收入=bb.公房租金历年尾欠收入,户.公房租金本年冲销=bb.公房租金本年冲销,'; str2:='户.公房租金历年冲销=bb.公房租金历年冲销'; str3:=' where (户.房籍号=bb.房籍号) and (户.改变用途=true)'; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add(str); ADOQuery6.SQL.Add(str1); ADOQuery6.SQL.Add(str2); ADOQuery6.SQL.Add(str3); ADOQuery6.ExecSQL; str:='update 户,bb set 户.计租月份=bb.计租月份,户.公房租金当月尾欠=bb.公房租金当月尾欠,户.公房租金本年尾欠=bb.公房租金本年尾欠,户.公房租金历年尾欠=bb.公房租金历年尾欠,'; str1:='户.公房租金本年尾欠收入=bb.公房租金本年尾欠收入,户.公房租金历年尾欠收入=bb.公房租金历年尾欠收入,户.公房租金本年冲销=bb.公房租金本年冲销,户.公房租金历年冲销=bb.公房租金历年冲销,'; str2:='户.维修基金当月尾欠=bb.维修基金当月尾欠,户.维修基金本年尾欠=bb.维修基金本年尾欠,户.维修基金历年尾欠=bb.维修基金历年尾欠,户.维修基金本年尾欠收入=bb.维修基金本年尾欠收入,户.维修基金历年尾欠收入=bb.维修基金历年尾欠收入'; str3:=' where (户.房籍号=bb.房籍号) and (户.改变用途=false)'; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add(str); ADOQuery6.SQL.Add(str1); ADOQuery6.SQL.Add(str2); ADOQuery6.SQL.Add(str3); ADOQuery6.ExecSQL; end; str:='Drop Table bb' ; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add(str); ADOQuery6.ExecSQL; application.MessageBox('正确!','数据整理完毕!',MB_OK); end;
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-14 08:50:53 IP:221.226.xxx.xxx 未訂閱
Access数据库就是这样的,事实证明大多桌面数据库在数据越多的情况下,效率越低,要想大幅度提高效率,应考虑使用更高效的数据库系统,如:MYSQL、MS SQL SERVER等。 由于桌面数据库的天生缺陷,即便做优化,效果也不会明显。
lwd188
一般會員


發表:13
回覆:33
積分:9
註冊:2005-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-14 10:28:48 IP:218.25.xxx.xxx 未訂閱
谢谢Vicen前辈: 但是我用Access数据库本身提供的同步(副本和主本同步)功能怎么比这块多了? 我想还是我那点数据库属性设得不多吧?(因为我用主本分了好几个副本,有的数据有冲突,所以只好用这个方法) 發表人 - lwd188 於 2005/10/14 10:35:59
系統時間:2024-05-12 11:04:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!