• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi中SQL批量插入记录

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

http://www.cnblogs.com/azhqiang/p/4050331.html

 

在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供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/

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
LINKAXESmatlabplot发布时间:2022-07-18
下一篇:
Matlab学习笔记(2)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap