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.
    --------------------- 
  • 相关阅读:
    话说地址栏的URL的最大长度
    程序员,我拿什么来拯救自己
    把女友升级为老婆的时候发生的BUG
    一个精典asp程序引发的错误引起的思考
    [转]提高 Web Service 数据传输效率的基本方法
    整理发布html的select控件实用js操作
    asp.net简单实现导出excel报表
    c#简单实现生成csv文件
    利用sql server直接创建日历
    jQuery学习笔记:效果
  • 原文地址:https://www.cnblogs.com/m0488/p/10840180.html
Copyright © 2011-2022 走看看