提高Visual Basic訪問數據庫的效率

發表于:2007-07-14來源:作者:點擊數: 標簽:
1.盡量使用事務處理更新 數據庫 VB 的事務處理包括以BeginTrans開始,以CommitTrans或Rollback結尾的多條數據庫操作指令。事務處理除了能很好的保證數據庫的完整性以外,同時能大大提高數據庫批量更新的效率。這是因為如果數據庫更新操作沒有使用事務處理,
  1.盡量使用事務處理更新數據庫

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

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

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

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

  使用Select進行數據庫操作固然簡單易用,但如果將一些檢索操作分解為等價的手工檢索代碼,則對數據庫的檢索速度將大大加快.分解的基本方法是對檢索關鍵字段進行索引,利用Seek方法定位后,根據索引的數據庫已經排序的特點,進行遍歷查找.對于遍歷范圍不是很寬時,這種方法能幾十倍的提高數據庫的訪問速度.例如:Select * from person where vol= '123' and birth= #11-02-73# 分解成下面的操作后,訪問速度可大大提高:
Table.Index= "vol"Table.Seek "=","123"if not table.nomatch then
while not table.eof
 if table("vol")="123" then
  table.movelast
 else if table("Birth")= #11-02-73# then
  '找到記錄
 end if
 table.movenext
wendend if

  3.使用attach綁定數據庫表

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

  4.使用dbSQLPassThrough選項

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

  dim mydb as databasedim myds as dynasetset mydb=opendatabase(..........)'打開數據庫set myds=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方法 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97