unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
btn1: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOCommand1: TADOCommand;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure ExecSql(SqlSentence:String);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ExecSql(SqlSentence:String);
begin
with ADOQuery1 do
begin
Close;
SQL.Clear();
SQL.Add(SqlSentence);
ExecSQL;
end;
end;
// 一条一套插入1万条数据 耗时大约86秒
procedure TForm1.Button1Click(Sender: TObject);
var I:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
Time:=GetTickCount;
for i:=1 to 10000 do
begin
Name:= QuotedStr('easyboot'+InttoStr(i));
SqlStr:=Format(' insert into MyTest (Name) values (%s)',[Name]);
ExecSql(SqlStr );
end;
Time:=GetTickCount-Time;
MsgStr:=Format('Time %d ',[Time]);
ShowMessage(MsgStr);
end;
// 一次插入1万条数据 耗时大约19秒
procedure TForm1.btn1Click(Sender: TObject);
var I,x:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
Time:=GetTickCount;
for i:=1 to 10000 do
begin
Name:= QuotedStr('easyboot'+InttoStr(i));
SqlStr:=SqlStr+Format(' insert into MyTest (Name) values (%s) ',[Name]);
end;
ExecSql(SqlStr );
Time:=GetTickCount-Time;
MsgStr:=Format('Time %d ',[Time]);
ShowMessage(MsgStr);
end;
// 一次插入1万条数据 耗时大约4秒
procedure TForm1.Button2Click(Sender: TObject);
var I,x:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
Time:=GetTickCount;
for i:=1 to 10000 do
begin
Name:= QuotedStr('easyboot'+InttoStr(i));
SqlStr:=SqlStr+ Format(' insert into MyTest (Name) values (%s) ',[Name]);
end;
ADOConnection1.Open;
ADOConnection1.BeginTrans;
ADOCommand1.CommandText:=SqlStr;
ADOCommand1.Execute();
ADOConnection1.CommitTrans;
Time:=GetTickCount-Time;
MsgStr:=Format('Time %d ',[Time]);
ShowMessage(MsgStr);
end;
end.
本文通过三种不同的方式在数据库中批量插入1万条数据,详细比较了每种方法的耗时,展示了不同批量数据插入策略的性能差异。实验结果显示,使用事务处理的方式效率最高,仅耗时约4秒。
972

被折叠的 条评论
为什么被折叠?



