【Access備忘録】ADOでスピードキングを目指す

記事
IT・テクノロジー
まずODBC接続の際のCursorLocationはadUseServer一択。エグい処理であればあるほどadUseClientに比べて速度に差が生まれます。本日エグい処理をプログラムしていたので試してみましたら段違いでした。

adUseServerだとrs.MovePrevious等の移動ができなくなるのですが、レコードセットを上に移動、だなんて一度もやったことがない! まったく無問題!(それに上移動はちょっと危ない)。

やはり水は下に流れるものです。ADOを勉強中の方はなにはともあれadUseServer一択、レコードセットの走査は上から下に、とされてください。



あと処理速度に関して言えば、リンクテーブルもエグい処理では差が出ます。

strSQL = "SELECT " & keyName(i) & " FROM [C:\Users\" & userName & "\server" & j & ".accdb]." & tableName(i)

このかたちでほかのデータベースを参照する場合も速度的にはリンク扱いになります。

なので、

strSQL = "SELECT " & keyName(i) & " FROM " & tableName(i)

cn.Open "Provider=Microsoft Office 12.0 Access Database Engine OLE DB Provider;" & "Data Source=C:\Users\" & userName & "\server" & j & ".accdb"

rs.Open strSQL, cn, , , adCmdText

このようにアチラ側として開くようにすればOKです。



でもわたしが一番好きなのは「そもそも処理させない」ですね。宇宙一の速度です笑。冗談のようでけっこう冗談でなかったりします。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す