ADOQuery打开突然变慢,出现‘超时已过期’报错,但,把SQL放在查询分析器中执行正常!解决办法
ADOQuery打开突然变慢,出现‘超时已过期’报错,但,把SQL放在查询分析器中执行正常!
有个程序,其中的一个ADOQuery的打开速度突然不知什么原因,变的的很慢,出现‘超时已过期’报错。
CommandTimeout为默认的30。
打开方式:
ADOQuery1.Active:=false;
ADOQuery1.Parameters.ParamByName('vdate1').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.date);
ADOQuery1.Parameters.ParamByName('vdate2').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker2.date);
ADOQuery1.Active:=true;
说明:
1,该程序用了有半年多,一直用的很正常,ADOQuery1都是很快的可以打开。期间也没有改动过。
2,把ADOQuery1的SQL语句贴到查询分析器中,可以正常执行,一般是1--5秒内执行完成。
3,把CommandTimeout设置比较大的时候可以打开,如:300S。但是这样没有意义,用户会抱怨的。
4,ADOQuery1的SQL语句约120行,用到8个表,表属性没有变更过。
5,在不同的电脑上测试,一样会报错。
6,delphi7+mssql2000
7,返回行约1千。
现在疑惑的是:为何突然变慢,而在查询分析器中(客户端)执行的速度又是正常的?
各位大侠,有没有遇到过,可能是什么原因引起的呢?
谢谢。
------解决方案--------------------
这么多SQL语句为什么不用存储过程
------解决方案--------------------
把SQL语句贴出来让人分析分析吧,我之前碰到过一段SQL因为用了distinct运行超慢,7S以上,后来替换后不用一秒就出结果了
有个程序,其中的一个ADOQuery的打开速度突然不知什么原因,变的的很慢,出现‘超时已过期’报错。
CommandTimeout为默认的30。
打开方式:
ADOQuery1.Active:=false;
ADOQuery1.Parameters.ParamByName('vdate1').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.date);
ADOQuery1.Parameters.ParamByName('vdate2').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker2.date);
ADOQuery1.Active:=true;
说明:
1,该程序用了有半年多,一直用的很正常,ADOQuery1都是很快的可以打开。期间也没有改动过。
2,把ADOQuery1的SQL语句贴到查询分析器中,可以正常执行,一般是1--5秒内执行完成。
3,把CommandTimeout设置比较大的时候可以打开,如:300S。但是这样没有意义,用户会抱怨的。
4,ADOQuery1的SQL语句约120行,用到8个表,表属性没有变更过。
5,在不同的电脑上测试,一样会报错。
6,delphi7+mssql2000
7,返回行约1千。
现在疑惑的是:为何突然变慢,而在查询分析器中(客户端)执行的速度又是正常的?
各位大侠,有没有遇到过,可能是什么原因引起的呢?
谢谢。
------解决方案--------------------
这么多SQL语句为什么不用存储过程
------解决方案--------------------
把SQL语句贴出来让人分析分析吧,我之前碰到过一段SQL因为用了distinct运行超慢,7S以上,后来替换后不用一秒就出结果了