unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ADODB, DB;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOCommand1: TADOCommand;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
Var
i:Integer;
begin
for i:= 0 to 30000 do
begin
ADOCommand1.CommandText := Format(' update userdata set port = %d where RecordId = 5000',[i]);
ADOCommand1.Execute;
end;end;执行上面的代码能使sqlserver进程的内存暴涨到两三百兆,到底是sqlserver的原因还是ado控件的属性没有设置好??请高手赐教,感激不尽啊。up也有分。。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ADODB, DB;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOCommand1: TADOCommand;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
Var
i:Integer;
begin
for i:= 0 to 30000 do
begin
ADOCommand1.CommandText := Format(' update userdata set port = %d where RecordId = 5000',[i]);
ADOCommand1.Execute;
end;end;执行上面的代码能使sqlserver进程的内存暴涨到两三百兆,到底是sqlserver的原因还是ado控件的属性没有设置好??请高手赐教,感激不尽啊。up也有分。。
在测试SQLServer吗?
然后再处理会不会好些呢。
把以上代码转换成SQL代码在SQL中直接执行看看再说别的2、DELPHI和数据库是完全脱离的,所以先看看SQL有没有问题
1、为什么我操作的是一张表,还要去建临时表呢?到底有什么不同???
2、难道sqlserver竟然会“笨的”在内存中保留30001表???为什么表来不及释放?如何释放表?
3、而且我程序退出时把adoconnection都关闭了,sqlserver进程为什么还不能是否内存???
日死了~~不知道 楼上说的创建临时表怎么个创建法?
create table temp from select.....么?
那跟直接跟新有什么区别?
1.把10万条记录先弄到临时表中,不要建立索引
2.把1000万条记录的表的索引先取消 <<<---非必要步骤,有时候反而会弄巧成拙
3、开启事务
4.把10万条记录一次性添加
5、事务完成或事务回滚会提高部分性能