zoukankan      html  css  js  c++  java
  • Delphi 操作SQL 插入一万条数据 三种方式速度测试

    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.
    --------------------- 
  • 相关阅读:
    CodeIgniter 2.X 于 PHP5.6 兼容错误
    解决 TextMate 2 无法安装 Emmet 插件
    Windows 10 KMS 激活方法
    Sublime Text 3 如何修改默认快捷键
    Grunt快速使用笔记
    CSS3字体发光效果
    CSS3使用盒模型实现三栏布局
    CSS3Transition添加多个过渡效果
    Javascript 判断网页横竖屏
    【iOS知识汇】OC点语法的坑
  • 原文地址:https://www.cnblogs.com/karkash/p/10840180.html
Copyright © 2011-2022 走看看