MDIAS不知道怎么回事呀1W条和10W条记录查询差这么多 ( 积分: 100 )

L

lsz100

Unregistered / Unconfirmed
GUEST, unregistred user!
我做测试,数据库,应用服务器,客户端在同一台电脑上.我的数据库有1个表,3个字段.
用MIDAS中的SOCKET查询,当这个表为1W条记录时,查询用了3秒.当这个表为10W条记录时,查询用了2分钟.差这么多时间呀.
 
数据库查询就是这个样子,要优化设计才可以,不在于midas,在与你的数据结构设置,索引是否建立,建立的是否合适等
 
就3个字段,一个主键,我查询语句就是SELECT * FROM BM 1W条也是这样,10条也这样查.
 
试试设置这两个属性:
DataSetProvider.Options:=TDataSetProvider.Options+[poReadOnly];
DataSetProvider.ResolveToDataSet:=true;
 
将查询写成存储过程试试
 
我的三层在单机中,有数据应用服务器,SCKTSRVR.EXE,客户端.我发现查询10W记录,SXKTSRVR.EXE用了2秒,客户端用了1秒,数据应用服务器用了1分50多秒(不是数据库)
不知怎么回事,我是查询,没有更新数据.
 
如果你要全部查出来,数据库自身会有很短时间,但是输入到你的视线里,会花费很多时间,因为你不是查询几条记录,如果查询几条,那还是建立索引,如果查询大量结果显示给用户,还是建议分批显示,让用户感觉不到数据迟缓。
 
问题是应用服务器用了1分57秒呀,我不知道它在做什么呀.
 
中间层就从数据库取出数据,把它封装成包啊,再传给客户端
 
如何优化呀,10W要用时2分钟,太慢了.
 
是不是引用多个视图或是多表连接查询的,优化一下语句试试.
 
我就对一个表查,就3个字段,一个主键.[:(!]
 
记录多了当然慢.
首先它要把数据打包成Midas的XML格式.10W打包成XML当然会很慢.
劝你最好把数据做分页.每次只传1000条.当他翻页的时候再取下1000条传过来
 
但是1W条用3秒,10W条用2分钟,打包成什么格式,都不会差这么多吧
 
在服务器端写上:Dataset.DisabledControl后试一下,应该有明显改善
 
Dataset.DisabledControl,是不是把数据集设成单向呀
 
小李飞哥,你的方法错,没这个方法。好像是DISABLECONTROLS。是用在ADOQUERY上面吗?
 
如果你是多CPU SQL Server的话,看看SQL Server服务器属性里有个CPU选项,减少几个CPU试试
 
是不是把所有数据都取过来了。。 试试每次只取需要的。
应该 随需要而动态取得吧。。
如果那么多数据都取回来,不用查询,光传输也要很久啊。
本机不本机是问题之一,问题之二,你查询数据一次若取回太多,内存不足就要写到什么地方? 虚拟内存。 等于查出来到内存里,再写到虚拟内存(硬盘)再继续读下一部分。。
……
 

Similar threads

S
回复
0
查看
747
SUNSTONE的Delphi笔记
S
S
回复
0
查看
696
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
969
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部