更新远程数据速度太慢

river_sea 2004-11-29 10:26:05
连接远程数据库,使用循环传100条纪录约50秒,300条约150秒。
请问该怎样设置?
(不知道该怎样说、在线等)
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
river_sea 2004-11-30
  • 打赏
  • 举报
回复
时间上没有明显改善,谢谢二位惠教。
我想这样多人使用sql数据库,应该有人遇到过这种情况。
就我这边情况,正常速率应该在100条/秒左右。
十豆三 2004-11-29
  • 打赏
  • 举报
回复
不用变量S1和S2,直接用下面插入试一试。

= SQLEXEC(gnConnHandle,"INSERT INTO product (sp,prodname,size,mstuff,package,prodarea,depot,spot,amount,price,unit,sortbey,clid,compname,name,tel) values (?sp,?prodname,?size,?mstuff,?package,?prodarea,?depot,?spot,?amount,?price,?unit,?sortbey,?clid,?compname,?name,?tel)")
river_sea 2004-11-29
  • 打赏
  • 举报
回复
bgn=second()

CLOSE DATABASE ALL

STORE SQLCONNECT('aa','m188','cw16194') TO gnConnHandle
IF gnConnHandle <= 0
= MESSAGEBOX('Cannot make connection', 16, 'SQL Connect Error')
RETURN
ELSE
= MESSAGEBOX('Connection made', 48, 'SQL Connect Message')
ENDIF



*****************************
= SQLEXEC(gnConnHandle,"delete from product")
use tmp\prod1 IN SELECT(1) &&本地表
sele prod1
go top
do while !eof()
s1="INSERT INTO product (;
sp,prodname,size,mstuff,;
package,prodarea,depot,spot,;
amount,price,unit,sortbey,;
clid,compname,name,tel)"
s2="values (?sp,?prodname,?size,?mstuff,;
?package,?prodarea,?depot,?spot,;
?amount,?price,?unit,?sortbey,;
?clid,?compname,?name,?tel)"
= SQLEXEC(gnConnHandle,s1+s2)
sele prod1
skip
enddo
= Sqlexec(gnConnHandle,"select * from product","tst")
= SQLDISCONNECT(gnConnHandle)

?second()-bgn
wait

select tst
brow
return
****************************************





river_sea 2004-11-29
  • 打赏
  • 举报
回复
用sql导入很快。
代码不长、等一下贴出来。
十豆三 2004-11-29
  • 打赏
  • 举报
回复
1、通过网络手工拷贝一个文件,看一看速度正常吗?来判断网络有没有问题。

2、如查网络正常,向远程数据库取数据看看速度怎么样?

3、如果向远程数据库取数据非常快,那就把你的向远程数据库的插入代码贴出来让大家看一看了。
river_sea 2004-11-29
  • 打赏
  • 举报
回复
请帮忙,谢谢!
cxmcxm 2004-11-29
  • 打赏
  • 举报
回复
用以下2方法看看会不会快一点:
1 、
=SQLEXEC(gnConnHandle,"select top 0 * from product",'product_tmp') &&取得空的临时表
*再用cursorsetprop()函数将临时表product_tmp设为可向sql server更新数据及表缓冲
*然后将数据插入product_tmp
*再用=tableupdate(.T.,.T.,'product_tmp') 将数据更新到服务器上
2、将你的程序先预编译,改为

= SQLEXEC(gnConnHandle,"delete from product")
s1="INSERT INTO product (;
sp,prodname,size,mstuff,;
package,prodarea,depot,spot,;
amount,price,unit,sortbey,;
clid,compname,name,tel)"
s2="values (?sp,?prodname,?size,?mstuff,;
?package,?prodarea,?depot,?spot,;
?amount,?price,?unit,?sortbey,;
?clid,?compname,?name,?tel)"
= SQLprepare(gnConnHandle,s1+s2)

use tmp\prod1 IN SELECT(1) &&本地表
sele prod1
go top
do while !eof()
= SQLEXEC(gnConnHandle)
sele prod1
skip
enddo
= Sqlexec(gnConnHandle,"select * from product","tst")
= SQLDISCONNECT(gnConnHandle


十豆三 2004-11-29
  • 打赏
  • 举报
回复
手工拷贝一个文件,看一看速度正常吗?
river_sea 2004-11-29
  • 打赏
  • 举报
回复
差不多,现在网速慢,比早上用的时间还要多一点。

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧