您的位置:首页 > 博客中心 > 数据库 >

Delphi中SQL批量插入记录

时间:2022-03-14 09:21

在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供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条记录, 计算他们所需的时间. 更多的记录因为时间问题未做测试, 不过这已经够说明问题的了.   看一看这两张图形:     我们可以看出在批量插入条数大于1000时, 3种插入方式产生了很大的区别, 拼接SQL语句花费的时间大大增加, 而事务处理花费的时间大概是单条插入花费时间的1/2左右.   我们再看看当记录数小于1000时是什么样子的, 如图: 我们可以看出当记录数小于100时, 拼接SQL语句的效率是很高的, 可以优先采用.   总结: 
   事务处理是不二的选择啊!   其实, 拼接SQL语句方法花费的时间大部分浪费在拼接语句上了,(不明白? 去看看string的原理吧!) 原文:http://anony3721.blog.163.com/blog/static/511974201022242736689/

热门排行

今日推荐

热门手游