用ADO编写大型查询时经常出现超时已过期错误?如何解决?谢谢各位了。

时间:2021-03-19 11:12:49
用ADO编写大型查询时经常出现超时已过期错误?如何解决?谢谢各位了。

5 个解决方案

#1


一.优化你的查询语句和数据库结构(如建索引).
二.把ADO的超时时间设置大一些.
这两种方法都可以减少出错,但如果你的查询确实很复杂,那不可避免.
好好换方法查询.

#2


一、优化你的查询语句,比如尽量少用Join、In等语句;
二、同楼上二;
三、将该查询做成视图或存储过程,然后在客户端以ADO来调用,这样执行效率就可以有很大幅度的提高。
四、这是我经常采用的一种方法,那就是将一个比较大的查询进行分解。比如“select table1.field1 from table1 where table1.field2=(select table2.field1 form table2 where table2.field2=table1.field3)”,可以先执行子查询,将结果赋值给一变量,再运行查询,这时的查询就是“select table1.field1 form table1 where table1.field2=var”。这样,经过分解后的查询,虽然在执行总时间上会更长,但一般不会再出现超时现象。

#3


冷冰冰,你好,关于你的第二个方法我试过过了。mycon.commandtimeout=6000。可是还是不行。是不是我设置错了?另:阿干。你的第三种方法如何做视图?

#4


设置超时时有几个地方需要注意:
一、Connection的超时,包括Connection.ConnectionTimeout和Connection.CommandTimeout两部分,都必须设好;

二、Command的超时,需要设Command.CommandTimeout的值。

如果直接用Connection对象来Execute一个SQL语句,那它的CommandTimeout必须设好;
如果用一个Command对象来执行SQL语句,那Command对象的Commandtimeout必须设好;
当然,无论哪种情况,Connection对象的ConnectionTimeout是必须要设的。

#5


我觉得应该设置connection的ConnectionTimeout

#1


一.优化你的查询语句和数据库结构(如建索引).
二.把ADO的超时时间设置大一些.
这两种方法都可以减少出错,但如果你的查询确实很复杂,那不可避免.
好好换方法查询.

#2


一、优化你的查询语句,比如尽量少用Join、In等语句;
二、同楼上二;
三、将该查询做成视图或存储过程,然后在客户端以ADO来调用,这样执行效率就可以有很大幅度的提高。
四、这是我经常采用的一种方法,那就是将一个比较大的查询进行分解。比如“select table1.field1 from table1 where table1.field2=(select table2.field1 form table2 where table2.field2=table1.field3)”,可以先执行子查询,将结果赋值给一变量,再运行查询,这时的查询就是“select table1.field1 form table1 where table1.field2=var”。这样,经过分解后的查询,虽然在执行总时间上会更长,但一般不会再出现超时现象。

#3


冷冰冰,你好,关于你的第二个方法我试过过了。mycon.commandtimeout=6000。可是还是不行。是不是我设置错了?另:阿干。你的第三种方法如何做视图?

#4


设置超时时有几个地方需要注意:
一、Connection的超时,包括Connection.ConnectionTimeout和Connection.CommandTimeout两部分,都必须设好;

二、Command的超时,需要设Command.CommandTimeout的值。

如果直接用Connection对象来Execute一个SQL语句,那它的CommandTimeout必须设好;
如果用一个Command对象来执行SQL语句,那Command对象的Commandtimeout必须设好;
当然,无论哪种情况,Connection对象的ConnectionTimeout是必须要设的。

#5


我觉得应该设置connection的ConnectionTimeout