面对十万条记录,这样的查询速度能不能实现?(30分)

  • 主题发起人 主题发起人 lzf1010
  • 开始时间 开始时间
L

lzf1010

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi连接foxpro的数据库,通过局域网从一个主表(大概十万条)和
一个从表(大概17万条)里查询数据,每次查询的结果大概有20条左右。
请问能否在10秒内查询出结果?
 
这和好多困素有关。软件、硬件等。它的负荷情况。
建立合适的索引,马上试试不就知道了。
 
我试过最快也要三十秒啊,我的机器配置是CPU1G 256M内存的。但客户要求是要十秒之内,
请问这有没有可能实现啊
 
根据表结构建立合适的索引,或者根据索引建立视图(foxpro好像不支持)
 
需要和客户原来的系统结合,所以数据库结构不能更改啊。请问各位大侠还有没有其它更好]
的办法啊
 
1秒以内不成问题,只要SQL语句不是太繁,能把查询内容给出来吗
 
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=:papno');
parameters.parambyname('papno').value:=strtoint(combobox1.Text);
prepared:=true;
open;
end;
 
我这就可以,记录还不至20万条呢,我直接在foxpro查的,数据放在另一条机上,通过软
软件也一样
 
SQL语句上可以有一些小改进,如将条件分项内容少的查询放在前面,
分项多的内容放在后面。尽量不要在SQL语句中包括计算,取子串等处理语句,
将数据库建立索引等。
数据库方面可以仔细分析数据库的特征和用户操作特征。简化数据库,建立视图,保留
常用数据临时库等
 
to王公子:
直接在foxpro里查肯定是非常快的,我说的是通过delphi用ADO在局域网里面查
 
索引一定要建。没有合适索引时,SQL自己会自动建,这要时间的!
把SQL的优化选项打开。

设置相应的缓冲选项,服务端查完后一次性返回客户端。
可使用“查询过程”。

还有服务端的一些配置:连接池....
 
那也没有问题,不知你的网络能不能达到100MB,
我这非常快的,总共是200万多条记录(考勤记录),用
起来没有等的感觉;
 
首先建立你所需要数据的视图特别重要。
再在视图上作查询。
 
直接用SELECT 查询不要用JOIN去联接会快一些。
 
我想這有一定的難度,因為我也這樣試過!
去與客戶溝通一下吧!有時候程序員不是萬能的!

 
糟糕的是他以前用VFP做的程序速度很快啊,但我用delphi调用就很慢啊,有什么方法解决吗?
 
这种数据库游标用服务器端的好一点
 
注意不要用LOCAL SQL,用ODBC试试,我用DELPHI+ODBC+VFP编的现在可能也有10万了,
还是很快。估计象你这两个表正常的话3~5秒以内。如在vfp内则<1s.
 
后退
顶部