程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 提高VisualBasic訪問數據庫效率

提高VisualBasic訪問數據庫效率

編輯:VB綜合教程
1.盡量使用事務處理更新數據庫

  VB的事務處理包括以BeginTrans開始,以CommitTrans或Rollback結尾的多條數據庫操作指令。事務處理除了能很好的保證數據庫的完整性以外,同時能大大提高數據庫批量更新的效率。這是因為如果數據庫更新操作沒有使用事務處理,則每次Update操作都會引起數據庫寫盤一次。使用事務處理後,更新只在內存緩沖區內進行,執行CommitTrans時才將所有修改一次寫回到磁盤中。使用事務處理要注意一下幾點:

  (1)事務處理要有很完善的錯誤檢查機制;

  (2)因為VB在事務處理結束前對數據庫使用了頁面鎖.所以在多用戶環境中,如果事務被掛起,則其他用戶將無法訪問上鎖的數據。

  2.盡量使用代碼分解Select檢索操作

  使用Select進行數據庫操作固然簡單易用,但如果將一些檢索操作分解為等價的手工檢索代碼,則對數據庫的檢索速度將大大加快.分解的基本方法是對檢索關鍵字段進行索引,利用Seek方法定位後,根據索引的數據庫已經排序的特點,進行遍歷查找.對於遍歷范圍不是很寬時,這種方法能幾十倍的提高數據庫的訪問速度.例如:Select*frompersonwherevol='123'andbirth=#11-02-73#分解成下面的操作後,訪問速度可大大提高:

  

  Table.Index="vol"Table.Seek"=","123"ifnottable.nomatchthen

  whilenottable.eof

   iftable("vol")="123"then

  table.movelast

   elseiftable("Birth")=#11-02-73#then

  '找到記錄

   endif

   table.movenext

  wendendif

  

  3.使用attach綁定數據庫表

  當使用ODBC連接MSSQLServer,Oracle和Sysbase之類的數據庫服務器時,我們可以通過MSAcess的attach功能將服務器上的表綁定到MSAcess數據庫中,因為MSAcess數據庫能緩存數據庫服務器上表的結構,當我們訪問ODBC數據源時能提高系統的訪問性能。


  4.使用dbSQLPassThrough選項

  連接MSSQLServer,Oracle和Sysbase數據庫服務器時,使用dbSQLPassThrough選項可將命令直接發送給數據庫服務器,從而減少中間件對命令的檢查和解釋,提高了數據庫的訪問性能。下例使用存儲過程建立Dynaset:

  dimmydbasdatabasedimmydsasdynasetsetmydb=opendatabase(..........)'打開數據庫setmyds=mydb.openrecordset("name",dbOpendynaset,dbSQLPassThrough,...)

  使用dbSQLPassThrough的缺點是返回的記錄集是只讀的。

  5.正確使用數據庫訪問對象Table.

  支持SEEK命令和索引.兩者配合能最快的找到紀錄.筆者曾經做過速度比較試驗,都是檢索10萬個記錄Table用時3.5秒Dynaset用時9秒Snapshot用時10秒.支持讀寫操作.不支持SORT和FILTER,必須使用Index代替.對應於數據庫中的物理表,增,刪,改會直接影響數據庫表。

  Dynaset.最靈活的數據庫對象.支持讀寫操作,是記錄的動態子集.在ODBC中,寫操作需要設定唯一性索引.支持SORT和FILTER.使用JOIN命令關聯多個表時,只能使用Dynaset。

  Snapshot.只能讀不能寫,不能加鎖.不支持事務處理.不支持Edit,Addnew和Update方法

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved