- 締切済み
[性能改善]AccessのDBに大量のデータをUpdateする場合の性能対策について
初めまして。 早速質問なのですが、VB(6.0)でmdb(Access2000)のDBを更新する処理を作りました。 DAOを用いて(初めて使います)以下のような構文を作ったのですが、 性能がぱっとしません。 何か下記のソースをいじることで性能が改善するような手立てはありませんでしょうか? ---------------------------------------------------------------------- Sub Main() Dim cDaoDB As DAO.Database Dim cDaoWS As Workspace Dim cColUpdate As Collection Dim varColItem As Variant Dim lngCnt As Long Set cDaoWS = DBEngine.Workspaces(0) Set cDaoDB = mDaoWS.OpenDatabase("C:\TEST.mdb") 'コレクションにデータをaddする処理は省略しています cColUpdate.add With cDaoDB cDaoWS.BeginTrans 'cColUpdateコレクションには10万件ほどのSQL構文(Update構文)が格納されています '10万回ほど繰り返し処理します For Each varColItem In cColUpdate lngCnt = lngCnt + 1 If lngCnt > 1000 Then 'データ量が多いため1000件ごとにコミットしています cDaoWS.CommitTrans cDaoWS.BeginTrans lngCnt = 0 End If strErrSQL = varColItem 'Update処理が繰り返し流れます。 .Execute varColItem Next .Close cDaoWS.Close End With Set cDaoDB = Nothing Set cDaoWS = Nothing End Sub ---------------------------------------------------------------------- よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
どのような更新がやりたいのか良く判りませんが、10万回もSQLを繰り返せば当然遅いはずです。一つのSQLで不可能であれば、数個のSQLで処理できないのでしょうか。対象テーブルの構造や、更新の内容を提示すれば、それなりの回答がでるかと考えます。
お礼
SQLの方を変更することになりました。 回答ありがとうざいました。