- ベストアンサー
アクセス 置換 どちらが早いのでしょうか?
アクセスで一つのテーブルに対して30回更新クエリでデータを置換するのと ADOで30回データを置換するのでは、 どちらが早いのでしょうか? どちらもReplaceを使います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 30回 これは回数ではなく、1回で何件のレコードを更新するか・・・になりますか? 私の中での感覚だけですが(以下、裏付けなし) 1回で複数(30)レコードであれば、クエリの方が速そう。 クエリであれば、Access さんが中でゴニョゴニョやって終われるのに対して、 ADO では Recordset の形にして抽出されたデータを渡す処理を考えれば・・・ 1回で1件であれば、実際にやってみて・・・ その結果で、Access ではこういうもの・・・と判断していいのかも? 余談)時間測定してみた 測定ツールは以下のものを使用 VBAでミリ秒以下の高精度で処理時間計測 http://hatenachips.blog34.fc2.com/blog-entry-377.html ・環境 テーブル「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」のレコード全部を対象にしましたが、実際には、 抽出条件等記述され、抽出にかかる時間云々・・・これらを加味する必要があると思います。 実際のテーブル、想定データ量、これらを使って検討/測定されればと思います。
お礼
ありがとうございました。