access的真假:三、往一个表中插入10万条记录的速度小于插入1万条记录吗?
时 间:2009-09-11 09:49:23
作 者:ACMAIN_CHM ID:3535 城市:无锡
摘 要:插入10万条的总时间显然比插入1万长(157s>19s),但速度显然快(157/100000<19/10000)
正 文:
下面这个贴子中讨论了很多ACCESS中的一些猜想假设。
Access或其它数据库操作效率问题.欢迎讨论
http://topic.csdn.net/u/20090514/10/a93475bd-e67e-45c8-aa1e-87168ba36d02.html#replyachor
引用 28 楼 wwwwb 的回复::
比如插入10万条记录,速度 <插入1万条记录;
面对这个问题,第一想法上,在一个mdb文件插入过多的记录,自然会导致MDB文件增大,需要不停地向操作系统申请磁盘空间的分配。因故会导致速度慢。但再仔细一想好象也没什么道理,毕竟加10000条也要申请10000条记录的空间,速度上应该没什么影响。毕竟ACCESS中又不会去用什么redo / undo log.
于是便做了个简单的测试如下以对这个猜想证实。
新建空的 t.mdb 文件,创建表 table1 (id int primary key,cname varchar(10)
然后新建 模块,内容如下。
view plaincopy to clipboardprint?
Option Compare Database
Option Explicit
Public Sub t1(nRowCnt As Long)
Dim i As Long
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
For i = 1 To nRowCnt
conn.Execute "insert into table1(id,cname) values(" & i & ",'" & i & "')"
Next i
End Sub
Public Sub t()
CurrentProject.Connection.Execute "delete from table1"
Debug.Print "t10000 start.", Now
Call t1(10000)
Debug.Print "t10000 end .", Now
CurrentProject.Connection.Execute "delete from table1"
Debug.Print "t100000 start.", Now
Call t1(100000)
Debug.Print "t100000 end .", Now
End Sub
Option Compare Database
Option Explicit
Public Sub t1(nRowCnt As Long)
Dim i As Long
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
For i = 1 To nRowCnt
conn.Execute "insert into table1(id,cname) values(" & i & ",'" & i & "')"
Next i
End Sub
Public Sub t()
CurrentProject.Connection.Execute "delete from table1"
Debug.Print "t10000 start.", Now
Call t1(10000)
Debug.Print "t10000 end .", Now
CurrentProject.Connection.Execute "delete from table1"
Debug.Print "t100000 start.", Now
Call t1(100000)
Debug.Print "t100000 end .", Now
End Sub
运行 t() 结果如下:
t10000 start. 5/14/2009 7:53:10 PM
t10000 end . 5/14/2009 7:53:29 PM
t100000 start. 5/14/2009 7:53:29 PM
t100000 end . 5/14/2009 7:56:06 PM
t10000 . 19s
t100000 . 157 s
试验结论:
插入10万条的总时间显然比插入1万长(157s>19s),但速度显然快(157/100000<19/10000)
看来实践是检验的唯一标准啊。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)
- 最精简的组合框行来源数据快速输入(...(10.25)