access的真假:三、往一个表中插入10万条记录的速度小于插入1万条记录吗?-ACMAIN.CHM
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-表


access的真假:三、往一个表中插入10万条记录的速度小于插入1万条记录吗?

发表时间:2009/9/11 9:49:23 评论(0) 浏览(9058)  评论 | 加入收藏 | 复制
   
摘 要:插入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群(群号:198465573)
 
 相关文章
access开发平台--报销教程快捷添加按钮出现:(您没有为Fin...  【缪炜  2012/2/28】
VBA排序的几种方法之插入排序  【缪炜  2012/6/19】
用一条“INSERT INTO”语句插入多条记录  【Big Young  2012/8/20】
Access运行时错误'3163':字段太小而不能接受所要添加的数...  【麥田  2012/9/22】
【Access小品】不是问题的问题--从数据库向Word指定位置连...  【煮江品茶  2013/3/28】
【Access拓展应用】如何在Access数据表中插入图片或声音信...  【nivenm  2013/5/21】
常见问答
技术分类
相关资源
文章搜索
关于作者

ACMAIN.CHM

文章分类

文章存档

友情链接