码迷,mamicode.com
首页 > 数据库 > 详细

Delphi中SQL批量插入记录

时间:2014-10-25 17:15:57      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   ar   使用   for   sp   数据   

在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供3种操作方式:
 
1.  单条语句循环插入, 这是最笨的方法:
for i := 0 to 100 do
  ADOCommand1.Execute(‘IINSERT INTO .....‘)   //伪码, 只是说明意思
 
2.  多条语句批量插入, 将多条Insert语句拼成一条语句, 一次执行:
for i := 0 to 100 do
  sqlstr := sqlstr + ‘INSERT INTO ...‘;
ADOCommand1.Execute(sqlstr);
 
3.  事务处理插入:
ADOConnection1.BeginTrans;
for i := 0 to 100 do
  ADOCommand1.Execute(‘IINSERT INTO .....‘);
ADOConnection1.CommitTrans;
 
如何使用这些操作, 我不做详细说明, 我来说一下它们的效率问题, 我想这才是我们关心的.
 
我做了这样一个试验:
建一个10个字段的数据表, 然后以此向数据表插入10,100, 500, 1000, 5000, 10000条记录, 计算他们所需的时间. 更多的记录因为时间问题未做测试, 不过这已经够说明问题的了.
 
看一看这两张图形:
 bubuko.com,布布扣
bubuko.com,布布扣
 
我们可以看出在批量插入条数大于1000时, 3种插入方式产生了很大的区别, 拼接SQL语句花费的时间大大增加, 而事务处理花费的时间大概是单条插入花费时间的1/2左右.
 
我们再看看当记录数小于1000时是什么样子的, 如图:
bubuko.com,布布扣
我们可以看出当记录数小于100时, 拼接SQL语句的效率是很高的, 可以优先采用.
 
总结: 
   事务处理是不二的选择啊!
 
其实, 拼接SQL语句方法花费的时间大部分浪费在拼接语句上了,(不明白? 去看看string的原理吧!)
原文:http://anony3721.blog.163.com/blog/static/511974201022242736689/

Delphi中SQL批量插入记录

标签:blog   http   io   os   ar   使用   for   sp   数据   

原文地址:http://www.cnblogs.com/azhqiang/p/4050331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!