ACCESS的真假:三、往一個表中插入10萬條記錄的速度小於插入1萬條記錄嗎?

來源:互聯網
上載者:User

下面這個貼子中討論了很多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)

 

看來實踐是檢驗的唯一標準啊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.