我要吐血了,用了14分钟统计了29条记录(50分)

  • 主题发起人 主题发起人 烂泥
  • 开始时间 开始时间

烂泥

Unregistered / Unconfirmed
GUEST, unregistred user!
前段时间用了一次Windows优化大师,
结果发现执行sql语句的速度明显慢了下来。
Delphi+Sql server 7
可能是我的Celeron 300+32M比较慢吧,
我Kao. 今天写了一个统计程序,每次统计生成29条记录
其中用了一些Select的嵌套,和Update and 其中最多的
一个循环也就10次,
结果发现运行后一会儿就不动了。以为程序有问题,
(按Ctrl+Alt+Delete.提示程序(没有响应)
查了半天,就是No Problem,
后来一气之下就让它没响应吧。我从22:47等到了23:01 程序提示
汇总完成。Faint单步执行都比这个快。

各位大虾救我。1111111


 
1.我估计是内存出了问题!
2.CPU过热使性能下降
3.恰巧赶上定期整理硬盘的任务起动!
....
 
我不会这么倒霉吧?也许,再看看
 
从键缩影,数据枯dump后再load试试,推荐后者.
 
对必要字段Index
 

“ Windows优化大师 ”一个名副其实的“害人大师”。

我的一个朋友,用它一次,结果整个硬盘都重做。

鸣 鸣 鸣 .....有些注册表不见了。

 
启动到DOS模式, 用ScanReg恢复到"害人大师"之前的系统吧
 
把ODBC和BDE重装一遍,再不得,把Delphi做掉。
 
今天加了64M内存,结果不行,用了PIII+128M还是不行,
用了沈前卫的办法,速度快了一点点,

其中有类似的三段
with query_pj do
begin
while I <= 700 do
begin
pjchange:='pj'+inttostr(i);
sql.add('UPDATE table1 SET '+pjchange+'=');
sql.Add ('(select sum('+pjchange+') from baobiao01');
SQL.Add ('where (rq>=:adate1) and (rq<:adate11)');
sql.Add ('and xlm IN (SELECT xianlu FROM xlgs WHERE bm in
(select bmbh from bmqk where bmmc=:var9)))');
SQL.add ('where (xlm=:var9) and (rq>=:adate1) and
(rq<:adate11)');
ParamByName ('var9').asstring:=sgsm;
ParamByName ('adate1').asdatetime:=sdate;
ParamByName ('adate11').asdatetime:=sdate+1;
ExecSQL ;
i:=i+50;
end;
end;
 
建议你优化一下你的统计方法。
 
我犯了一个严重错误。
上面的程序通过循环发送了大量的 SQL 语句到服务器端,导致出现问题。

我再问;大峡们做统计时,一般如何做。如何优化?

 
在循环体里加延时语句, 延个1,2秒
 
还不行就在延长的更久点,反正比14分钟快
 
我一般做存储过程
 
查询优化!!!!!
 
你用sql7自带的查询分析器看看时间主要用在哪个方面,然后再根据实际情况解决。
 
没看懂你的sql语句:(
做几个存储过程吧。那么复杂的sql语句。。。
另外,while 放到with query_pj do 下 总看着别扭。
 
你的代码有太多的嵌套,用in也是慢的原因。
 
所有的问题就在这里“程序通过循环发送了大量的 SQL 语句到服务器端”

改了以后,大概同样的工作用了6秒。快多了,
不做不知道,以后有空要写点体会,
 
后退
顶部