用存储过程执行Insert和直接执行Insert的性能比较

原创 2005年01月02日 19:12:00

    最近写一个程序将IP与所在地区的列表有纯文本文件导入到数据库中,一开始使用的是直接用SqlCommand执行Insert语句,后来知道了SQL Server能够对存储过程进行优化,省去了对语句进行分析的时间,比直接用Insert语句要快一些。我就把Insert语句放在了一个临时存储过程中,用这个临时存储过程进行Insert操作,并粗略测试了两者执行的时间。

存储过程为:

CREATE PROCEDURE #InsertIPData
@StartIP nvarchar(50),
@EndIP nvarchar(50),
@Country nvarchar(50),
@Local nvarchar(100)
AS
INSERT INTO [IPWry] VALUES(@StartIP, @EndIP, @Country, @Local)

Insert语句为:

INSERT INTO [IPWry] VALUES(@StartIP, @EndIP, @Country, @Local)


    执行此存储过程用的是SqlDataAdapter的Update,总共180485条记录。

结果如下:

                    第一次        第二次        第三次        平均
直接执行Insert      133秒         132秒         135秒         133.3秒
存储过程            121秒         122秒         120秒         121秒


测试环境:Windows Server 2003, SQL Server 2000(v8.0.818), Framework 1.1.4322 sp1(Winform);
          Pentium 4 2.0GHz, 512MB RAM

    本结果说明,用存储过程执行大量Insert语句比直接执行Insert语句速度大约快10%。

版权声明:本文为博主原创文章,未经博主允许不得转载。

bulk insert超时问题解决经验

从目前经验看,如果频率使用bulk insert做数据导入,要注意以下问题 1.服务器会有一些dbcheck的任务,而这种任务在运行时,会影响bulk insert 2.如果开启的订阅发布关系,则...
  • zb219
  • zb219
  • 2013年10月24日 17:23
  • 886

执行存储过程超时 SQL

     在执行存储过程时,我们常遇到执行超时的情况。     如果是因为要处理的数据过多,修改流程复杂等原因的话,如以用以下方法解决:       在存储过程的处理工作中加上事务管理:    SE...
  • zhupt
  • zhupt
  • 2009年02月09日 11:50
  • 5983

mysql 方法或者存储过程执行慢的调试方法

第一步:修改/etc/my.cnf文件,找到[mysqld] 里面加入 #执行的sql log=/tmp/logs/mysqld.log #记录sql执行超过下面设置时间的sql log-slo...
  • xuewufeifang
  • xuewufeifang
  • 2015年10月13日 15:11
  • 3913

编译存储过程时一直遇到未响应 ORA-04021: 等待锁定对象 时发生超时

今天在编译一个存储过程的时候,pl/sql一直未响应(没有其他会话调用,自己也没有调用),任务管理器都结束了好几次进程,但是每次重新进还是一编译就未响应,用下面语句把一些锁住的都杀了,语句如下: s...
  • u012366626
  • u012366626
  • 2014年03月28日 15:25
  • 3455

Mysql 存储过程+Mybatis调用实现插入操作例子

一、网上关于存储过程的使用有很多的例子,
  • AuthorK
  • AuthorK
  • 2014年10月27日 11:23
  • 2384

PLSQL 如何将多个insert语句一起运行

PLSQL 如何将多个insert语句一起运行 insert into loc(列1,列2,列3) values ('A','B','C'); insert into loc(列1,列2,列3...
  • evilcry2012
  • evilcry2012
  • 2016年12月23日 13:06
  • 1057

C#下创建存储过程用于Insert或者Update数据的Demo

开始的时候想用那个批量导入工具,但是后来发现这个批量导入适用于那种第一次导入的情况,假如再次进行操作而且当前数据库中已经有一些数据则不再合适! 然后我就尝试创建了存储过程,这应该也可以很大程度上提高...
  • energeticsunxiaocong
  • energeticsunxiaocong
  • 2015年03月11日 11:01
  • 1655

oracle dblink 在存储过程里执行效率很慢,单独执行很快的问题解决

现象描述:关于oracle Dblink 查询的效率慢的问题,起初直接使用select * from tab@dblink 查询效率很快,由于想通过定时任务执行,因此写了存储过程 insert in...
  • wlp_name
  • wlp_name
  • 2015年08月15日 17:29
  • 2673

批处理batch,执行多个SQL语句

批处理batch,执行多个SQL语句。[sql] view plaincopy try{      stmt=conn.createStatement();      conn.setAutoCom...
  • xiong9999
  • xiong9999
  • 2016年11月21日 13:27
  • 1077

JDBC执行SQL语句

一.执行SQL语句 使用PreparedStatement,由PreparedStatement创建,PreparedStatement对象用于发送带有一个或多个输入参数的SQL语句,执行语句时,输...
  • tf2333
  • tf2333
  • 2016年03月20日 23:34
  • 916
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用存储过程执行Insert和直接执行Insert的性能比较
举报原因:
原因补充:

(最多只允许输入30个字)