Delphi 操作SQL 插入一万条数据 三种方式速度测试
2013-05-21 12:06
513 查看
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.
相关文章推荐
- 尽管普通的sql语句代码可以实现数据插入的操作,但是更好的代码应该是参数的方式:
- Hibernate三种数据操作方式HQL-Criteria-Sql
- 三种方式sql 插入多行数据
- SQL获取插入后数据ID的三种方式比较
- 数据结构之头指针链表de三种插入方式(头插法,尾插法,在pos处插入)
- C#:30行数据插入到数据库中的效率测试-一行行执行、构造SQL一次执行、SqlBulkCopy
- sql 批量插入测试数据
- mybatis以map的方式批量插入list集合数据操作步骤
- 使用SQL语句对表进行插入、修改和删除数据操作
- ORACLE数据库测试数据插入速度
- Delphi中ADO处理数据的几种方式的速度比较
- SQL语句创建表并插入指定N条数据(用于测试)
- hive安装测试及Hive 元数据的三种存储方式
- sql语句批量插入测试数据
- MySQL循环插入数据存储过程(速度较慢,准备测试数据用)
- Oracle批量插入数据的三种方式【推荐】
- C# 用SqlBulkCopy 批量插入oracle数据 遇到了 ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- CI框架AR操作(数组形式)实现插入多条sql数据的方法
- 通过SQL脚本导入数据到不同数据库避免重复导入三种方式
- 学习操作oracle.sql.Blob数据类型,向数据库插入Blob数据类型的数据