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.
    --------------------- 
  • 相关阅读:
    nodejs MYSQL数据库执行多表查询
    【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
    【BZOJ2693】jzptab 莫比乌斯反演
    【BZOJ2154】Crash的数字表格 莫比乌斯反演
    【BZOJ2242】[SDOI2011]计算器 BSGS
    【BZOJ2005】[Noi2010]能量采集 欧拉函数
    【BZOJ1408】[Noi2002]Robot DP+数学
    【BZOJ2045】双亲数 莫比乌斯反演
    【BZOJ2186】[Sdoi2008]沙拉公主的困惑 线性筛素数
    【BZOJ4176】Lucas的数论 莫比乌斯反演
  • 原文地址:https://www.cnblogs.com/m0488/p/10840180.html
Copyright © 2011-2022 走看看