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;
procedure TForm1.Button1Click(Sender: TObject);
var I:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
// 一条一套插入1万条数据 耗时大约86秒
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;
procedure TForm1.btn1Click(Sender: TObject);
var I,x:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
// 一次插入1万条数据 耗时大约19秒
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;
procedure TForm1.Button2Click(Sender: TObject);
var I,x:integer;
SqlStr,MsgStr:string;
ID,Name:string;
Time:Cardinal;
begin
// 一次插入1万条数据 耗时大约4秒
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.

Delphi 操作SQL 插入一万条数据 三种方式速度测试
批量数据插入性能对比
最新推荐文章于 2025-10-13 15:29:32 发布
本文通过三种不同的方式在数据库中批量插入一万条记录,并对比了它们的执行时间。第一种方式是一条一条地插入;第二种方式是将所有SQL语句拼接在一起执行;第三种方式则是使用事务进行批量插入。
3088

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



