プロが教えるわが家の防犯対策術!

アクセスで一つのテーブルに対して30回更新クエリでデータを置換するのと
ADOで30回データを置換するのでは、
どちらが早いのでしょうか?

どちらもReplaceを使います。

A 回答 (1件)

> 30回



これは回数ではなく、1回で何件のレコードを更新するか・・・になりますか?
私の中での感覚だけですが(以下、裏付けなし)

1回で複数(30)レコードであれば、クエリの方が速そう。
クエリであれば、Access さんが中でゴニョゴニョやって終われるのに対して、
ADO では Recordset の形にして抽出されたデータを渡す処理を考えれば・・・

1回で1件であれば、実際にやってみて・・・
その結果で、Access ではこういうもの・・・と判断していいのかも?


余談)時間測定してみた

測定ツールは以下のものを使用

VBAでミリ秒以下の高精度で処理時間計測
http://hatenachips.blog34.fc2.com/blog-entry-377 …

・環境

テーブル「T24」
フィールド:「an」(オートナンバ:主キー)「F1」(テキスト型)

上記テーブルに 5000 件のレコード(「F1」に "ABCDabcd" 同じもの)

クエリ「Q_T24」  UPDATE T24 SET F1 = Replace(F1,"BB","CC");


・記述

Public Sub test()
  Dim rs As New ADODB.Recordset

  Call SWStart
  CurrentDb.QueryDefs("Q_T24").Execute
  Call SWStop
  Call SWShow("更新クエリ")

  Call SWStart
  rs.Open "T24", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
  While (Not rs.EOF)
    rs("F1") = Replace(rs("F1"), "BB", "CC")
    rs.Update
    rs.MoveNext
  Wend
  rs.Close
  Call SWStop
  Call SWShow("ADO")
End Sub


・5回測定平均(私のPCでの雰囲気)

更新クエリ 160.0392 / ADO 197.0505

上記結果は、単にテーブル「T24」のレコード全部を対象にしましたが、実際には、
抽出条件等記述され、抽出にかかる時間云々・・・これらを加味する必要があると思います。

実際のテーブル、想定データ量、これらを使って検討/測定されればと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/09/09 21:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!