SQL语句执行 越来越慢
表不大,20万记录,需要全部读出来传送到别的地方,不可能一次全读出来,内存也受不了。
因为传送要花点时间,所以为了效率,采用多线程。一共开了50个线程,每个线程负责4000条记录的读取和传送,线程每次读50个记录,传送完后再读50个,...,在读记录的时候程序中加了锁,防止冲突。
开始的时候工作良好,每次读取花费的时间不到0.1秒,但到了后来就越来越慢,需要花几分钟才能执行完一次读取,而这时候在其他的地方(比如数据库管理工具)执行同样的sql 语句,非常快。
我用的是C#做的程序,为了解决这个问题,使用了各种方法,比如把执行的SQL放到存储过程中,使用DataAdapter.fill读到Dataset中,使用DataReader等等,全部不行。
SQL语句也非常简单,就是像“select [id],[quantity],[city],....from table where id between m and n";
请问各位高手,有什么好的办法吗?
[解决办法]
加上索引试过么。。。
[解决办法]
程序中在SQL查询后有没有关闭连接,或者去看看数据库连接池的设置。
[解决办法]
一共开了50个线程 在读记录的时候程序中加了锁,防止冲突。
线程越多,速度不一定越快
[解决办法]
表不大,20万记录,需要全部读出来传送到别的地方
LZ 用数据导入导出嘛,换种方式看,不一定就非得用线程的
[解决办法]
在between and这个字段上加上聚集索引试下
[解决办法]
DataReader看看是否关闭连接了,如果传送数据慢的话,可以考虑用WCF传递。。
[解决办法]
1.加锁为了放冲突。这里的锁是指SQL SERVER中的锁还是线程之间的互斥锁之类的?
2.开始的时候0.1秒,后来几分钟。是指程序程序刚执行的时候快,后来慢?还是指以前执行挺快,现在慢了?
[解决办法]
需要花几分钟才能执行完一次读取,而这时候在其他的地方(比如数据库管理工具)执行同样的sql 语句,非常快。