新聞| | PChome| 登入
2007-07-07 12:26:27 | 人氣452| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

提高Visual Basic訪問資料庫的效率

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方法


台長: Kenny
人氣(452) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: 程式設計 |
此分類下一篇:利用Visual Basic實現木馬攻擊
此分類上一篇:Visual Basic程式設計訪問WMI對象

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文