下面這個貼子中討論了很多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)
然後建立 模組,內容如下。
Option Compare Database<br />Option Explicit</p><p>Public Sub t1(nRowCnt As Long)<br /> Dim i As Long<br /> Dim conn As ADODB.Connection<br /> Set conn = CurrentProject.Connection</p><p> For i = 1 To nRowCnt<br /> conn.Execute "insert into table1(id,cname) values(" & i & ",'" & i & "')"<br /> Next i</p><p>End Sub</p><p>Public Sub t()<br /> CurrentProject.Connection.Execute "delete from table1"</p><p> Debug.Print "t10000 start.", Now<br /> Call t1(10000)<br /> Debug.Print "t10000 end .", Now</p><p> CurrentProject.Connection.Execute "delete from table1"</p><p> Debug.Print "t100000 start.", Now<br /> Call t1(100000)<br /> Debug.Print "t100000 end .", Now</p><p>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)
看來實踐是檢驗的唯一標準啊。