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.
    --------------------- 
  • 相关阅读:
    将不确定变为确定~接口应该是什么
    架构,改善程序复用性的设计~目录(附核心原代码)
    php实战第二十五天
    java一道简单的括号匹配问题
    屈原坐上神十带来了iOS 7
    《别独自用餐》 警句摘录
    php实战第二十四天
    偷了世界的程序员
    变故
    “快排”笔记
  • 原文地址:https://www.cnblogs.com/m0488/p/10840180.html
Copyright © 2011-2022 走看看