Delphi中SQL批量插入记录
2023-09-14 09:11:36 时间
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/
相关文章
- pl sql developer中的CnPlugin插件,sql代码自动补全提示,批量添加单引号「建议收藏」
- sql服务器系统时间格式,SQL Server 日期格式和日期操做
- Spark SQL报错:org.apache.spark.sql.catalyst.errors.package$TreeNodeException 排查记录
- Linkedin领英批量点赞,提升曝光率和活跃度【领英干货】
- T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法
- Oracle批量执行sql语句之禁用所有表的外键
- jdbctemplate 批量操作代码详解编程语言
- 中的应用Oracle数据库中的SQL语句使用指南(sql语句在oracle)
- “快速实现Linux批量重命名”(批量重命名linux)
- 利用mongodb进行高效批量写入数据(mongodb批量写入)
- SQL连接MySQL:从零开始(sql连接mysql)
- 备份Mysql 批量SQL语句备份方式(mysql批量sql)
- MySQL数据库的SQL语句执行过程(mysql执行sql)
- 探索Oracle数据库中的关联式SQL(oracle关联sql)
- 将SQL查询结果存入Redis缓存(sql结果存入redis)
- MySQL 上下级 SQL 查询技巧(mysql 上下级sql)
- Discuz批量替换帖子内容的方法(使用SQL更新数据库)