L lzf1010 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #1 用delphi连接foxpro的数据库,通过局域网从一个主表(大概十万条)和 一个从表(大概17万条)里查询数据,每次查询的结果大概有20条左右。 请问能否在10秒内查询出结果?
J jsxjd Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #2 这和好多困素有关。软件、硬件等。它的负荷情况。 建立合适的索引,马上试试不就知道了。
L lzf1010 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #3 我试过最快也要三十秒啊,我的机器配置是CPU1G 256M内存的。但客户要求是要十秒之内, 请问这有没有可能实现啊
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #4 根据表结构建立合适的索引,或者根据索引建立视图(foxpro好像不支持)
L lzf1010 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #5 需要和客户原来的系统结合,所以数据库结构不能更改啊。请问各位大侠还有没有其它更好] 的办法啊
我 我爱PASCAL Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #6 1秒以内不成问题,只要SQL语句不是太繁,能把查询内容给出来吗
L lzf1010 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #7 with adoquery3 do begin DisableControls; close; sql.clear; sql.add('select tm,papno,qlt,iway,quants,ljsx.sxno,iclno,ims,apric,'); sql.add('partno,namec,unitc,ipric,note,pay,pno,bdate'); sql.add('from cggj_x left join ljsx on cggj_x.sxno=ljsx.sxno '); sql.add('where cggj_x.io=.f. .and.'); sql.add(' cggj_x.papno=apno'); parameters.parambyname('papno').value:=strtoint(combobox1.Text); prepared:=true; open; end;
with adoquery3 do begin DisableControls; close; sql.clear; sql.add('select tm,papno,qlt,iway,quants,ljsx.sxno,iclno,ims,apric,'); sql.add('partno,namec,unitc,ipric,note,pay,pno,bdate'); sql.add('from cggj_x left join ljsx on cggj_x.sxno=ljsx.sxno '); sql.add('where cggj_x.io=.f. .and.'); sql.add(' cggj_x.papno=apno'); parameters.parambyname('papno').value:=strtoint(combobox1.Text); prepared:=true; open; end;
王 王公子 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #8 我这就可以,记录还不至20万条呢,我直接在foxpro查的,数据放在另一条机上,通过软 软件也一样
W whitehorse Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-30 #9 SQL语句上可以有一些小改进,如将条件分项内容少的查询放在前面, 分项多的内容放在后面。尽量不要在SQL语句中包括计算,取子串等处理语句, 将数据库建立索引等。 数据库方面可以仔细分析数据库的特征和用户操作特征。简化数据库,建立视图,保留 常用数据临时库等
SQL语句上可以有一些小改进,如将条件分项内容少的查询放在前面, 分项多的内容放在后面。尽量不要在SQL语句中包括计算,取子串等处理语句, 将数据库建立索引等。 数据库方面可以仔细分析数据库的特征和用户操作特征。简化数据库,建立视图,保留 常用数据临时库等
L lzf1010 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #10 to王公子: 直接在foxpro里查肯定是非常快的,我说的是通过delphi用ADO在局域网里面查
J jsxjd Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #11 索引一定要建。没有合适索引时,SQL自己会自动建,这要时间的! 把SQL的优化选项打开。 设置相应的缓冲选项,服务端查完后一次性返回客户端。 可使用“查询过程”。 还有服务端的一些配置:连接池....
王 王公子 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #12 那也没有问题,不知你的网络能不能达到100MB, 我这非常快的,总共是200万多条记录(考勤记录),用 起来没有等的感觉;
G gzfrank Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #13 首先建立你所需要数据的视图特别重要。 再在视图上作查询。
G gmp1979 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #14 直接用SELECT 查询不要用JOIN去联接会快一些。
Q qinmingzsj Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #15 我想這有一定的難度,因為我也這樣試過! 去與客戶溝通一下吧!有時候程序員不是萬能的!
L lzf1010 Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #16 糟糕的是他以前用VFP做的程序速度很快啊,但我用delphi调用就很慢啊,有什么方法解决吗?
我 我爱PASCAL Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-31 #20 注意不要用LOCAL SQL,用ODBC试试,我用DELPHI+ODBC+VFP编的现在可能也有10万了, 还是很快。估计象你这两个表正常的话3~5秒以内。如在vfp内则<1s.