真烦,这么晚还在加班ing...由于某些原因,我将以下语句写在了循环中(三层结构),
for c := 0 to i do
begin
...
cds.Close;
cds.CommandText := '......';
cds.Open
...
end;当循环次数不变时,反复执行此循环,内存上涨较小(1%左右),但是当i取较大的值时,如3000,内存涨得非常厉害,SQL大概用了150M内存(但反复执行上涨也不大,只是系统响应非常缓慢),我想问,是不是我的sql没有写对?或者,SQL SERVER在执行大量查询时本身就会消耗掉大量内存?当然,我是不得以在必须要在循环中写查询语句的。随便问一句,对于数据集,我一口气取出所有要的记录,然后在循环中一步一步通过Filter来返回特定的记录集,这样对内存的消耗是否少些?我的程序的循环极限值大概在20000左右。
for c := 0 to i do
begin
...
cds.Close;
cds.CommandText := '......';
cds.Open
...
end;当循环次数不变时,反复执行此循环,内存上涨较小(1%左右),但是当i取较大的值时,如3000,内存涨得非常厉害,SQL大概用了150M内存(但反复执行上涨也不大,只是系统响应非常缓慢),我想问,是不是我的sql没有写对?或者,SQL SERVER在执行大量查询时本身就会消耗掉大量内存?当然,我是不得以在必须要在循环中写查询语句的。随便问一句,对于数据集,我一口气取出所有要的记录,然后在循环中一步一步通过Filter来返回特定的记录集,这样对内存的消耗是否少些?我的程序的循环极限值大概在20000左右。
for c := 0 to i do
begin
...
cds.Close;
cds.CommandText := '......';
cds.Open
sleep(50);
...
end;
延时50MS对你根本没影响,对他就不同了