ACCESS的真假:二、检查记录有无再insert 或 update 比 不管有无直接 delete 再 insert 快吗?
来源:互联网 发布:防止网络诈骗主题班会 编辑:程序博客网 时间:2024/05/08 07:45
下面这个贴子中讨论了很多ACCESS中的一些猜想假设。
Access或其它数据库操作效率问题.欢迎讨论
http://topic.csdn.net/u/20090514/10/a93475bd-e67e-45c8-aa1e-87168ba36d02.html#replyachor
比如表 table1 (id int primary key,cname varchar(10)
+----+-------+
| id | cname |
+----+-------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| .. | ... |
+----+-------+
如果现在有一记录 (1234, 'KKKK'), 需要添加。那么两种方法。
方法一: 先做判断记录 1234是否存在,存在的话就 update table1 set cname = 'KKKK' where id=1234; 否则就 insert into table1 values(1234,'KKKK');
方法二: 不做任何判断,直接先 delete from table1 where id=1234; insert into table1 values(1234,'KKKK');
那么哪一种方法快?
在未做试验前,感觉上第二种方法,删除再添加记录应该是比较慢的一种。 但只是凭感觉,事实上是什么样呢,于是做了个简单的测试。
ACCESS 2003 SP3 + Windows 2000 SP4
新建一个空的t.mdb文件,然后建表 table1 (id int primary key,cname varchar(10)
新建一个模块,代码如下。
结果很有趣。在把 'CurrentProject.Connection.Execute "delete from table1 where id=1234" 这一句注释的情况下,也就是表中存在该记录。需要进行更新。
表中记录已存在 测试结果:
t1 start. 5/14/2009 12:02:36 PM
t1 end . 5/14/2009 12:02:42 PM
t2 start. 5/14/2009 12:02:42 PM
t2 end . 5/14/2009 12:02:52 PM
t3 start. 5/14/2009 12:02:52 PM
t3 end . 5/14/2009 12:02:57 PM
t4 start. 5/14/2009 12:02:57 PM
t4 end . 5/14/2009 12:03:05 PM
把这个注释找开,即模拟记录不存在的情况。
表中记录不存在 测试结果:
t1 start. 5/14/2009 12:14:22 PM
t1 end . 5/14/2009 12:14:34 PM
t2 start. 5/14/2009 12:14:34 PM
t2 end . 5/14/2009 12:14:48 PM
t3 start. 5/14/2009 12:14:48 PM
t3 end . 5/14/2009 12:15:01 PM
t4 start. 5/14/2009 12:15:01 PM
t4 end . 5/14/2009 12:15:14 PM
在更新情况下各方法所耗时。t1: 6s t2: 10s t3: 5s t4: 8s
在插入情况下各方法所耗时。t1: 12s t2: 14s t3: 13s t4: 13s
结论
插入情况下各方法差不多
更新的情况下则差异比较大。方法二T4() 比 方法二T2() 快 20%
大家如果有兴趣,可以得用上面的代码,将初始化table1的代码更改一下,比较添加更多的记录到100,000级,或者添加更多的字段进行测试。 如有什么不同结果希望能反馈给我以对此试验进行补充修正。
- ACCESS的真假:二、检查记录有无再insert 或 update 比 不管有无直接 delete 再 insert 快吗?
- ACCESS的真假:一、DROP删除表再重建比Delete from Table1快吗?
- 记录INSERT,UPDATE或DELETE语句
- insert、update、delete的用法
- 带有OUTPUT的INSERT,DELETE,UPDATE使用方式记录
- 检查SQLSERVER有无创建表或存储过程的方法
- Insert Update Delete Select
- Insert , Update , Delete 触发器
- Insert,Update,Delete操作
- insert、delete、update、replace
- SQL中delete+insert 和update哪个快
- 最基本的用法---Insert,Update,Delete
- hibernate自定义的(insert,update,delete)语句
- SQL2005中常用的insert、update、Delete。
- SQL 表的Insert ,update ,delete 触发器
- 触发器 判断insert , update ,delete 的方法
- 带有OUTPUT的INSERT,DELETE,UPDATE
- SQLite的insert、delete、update操作
- 面试题精选(62):组合算法
- JavaScript传说中的图片截取(只显示一张图片的某个部分)
- Openfire Connection Manager 配置
- SAP ABAP
- 在应用程序级别之外使用注册为allowDefinition='MachineToApplication' 的节是错误的
- ACCESS的真假:二、检查记录有无再insert 或 update 比 不管有无直接 delete 再 insert 快吗?
- SAP ABAP -----ABAP 有用的日期FUNCTION
- SAP常用知识点{系统变量|TCODE|消息类型|数据类型|变量声明|Internal Table}
- CRM下午茶:寻根Siebel
- 常见的C语言面试编程题(三)
- 别让你的简历15秒后被扔掉的秘籍
- 里氏替换原则
- 精彩的最后一分钟
- c#用户控件