• ベストアンサー

アクセス 置換 どちらが早いのでしょうか?

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

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.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」のレコード全部を対象にしましたが、実際には、 抽出条件等記述され、抽出にかかる時間云々・・・これらを加味する必要があると思います。 実際のテーブル、想定データ量、これらを使って検討/測定されればと思います。

eipchrucwizi
質問者

お礼

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

関連するQ&A

  • テーブルを使った置換

    Access2002 Accessでクエリ実行時に特定の文字列を置換したいと思っています。 今までは置換する文字列が1つだけだったので、replace関数を使って直接置換する文字列を書いていたのですが、置換する文字列が今後増えてきそうなのでテーブルで管理したいと思っています。 置換用テーブル 元 ,置換後 000022,002078 000218,002403 000447,002703 クエリは単純な選択クエリなのですが、上記のようなテーブルを使ってクエリ実行時に文字を置換する方法がわかりません。 よろしくお願いします。

  • AccessのデータをVBを使って置換する

    (1)VisualBasic6.0を用いて、Access2000のデータベースに接続します。 (2)データベースの中のテーブル(テーブル名:T-カレンダー)にあるフィールド(フィールド名:コード)に保存されているデータの一部分を置換したい。(⇒途中のアルファベットを変更したい。)(例;置換前:123FFF789 置換後:123III789)  テーブルを直接開いて、フィールドにカーソルをあわせて、”編集メニュー”の『検索と置換』から行っても出来るのですが、Accessを触らないでVBから作ったフォームから変更(置換)をさせたい。  ◇フォームに2つテキストボックスを作って、「検索する文字列」と「置換後の文字列」を入力し、『変換』ボタンを押したら、データが置換される、という流れ。   一回きりの置換でなくて、何回でも同じフィールド内のデータを置換したい。   SQLのREPLACE関数を用いて出来るかな、とは思っているのですが、どのように作成すればよろしいのでしょうか。  また他のやり方でシンプルな方法があればお教えください。

  • アクセスのレコードデータ一部置換

    たとえば「6DBO1282」のようなデーが有り、このなかの0(オー)を0(ゼロ)に更新クエリで置き換えるにはどうしたらいいのでしょうか。 ワイルドカードを使ってもうまく行きません。 例えば、 抽出条件として*o*、レコードの更新として*0*としたら関係データ全てが*0*に置き換わってしまいました。 (テーブル上の検索と置換では出来る事はわかっています。)

  • access2010 クエリの置換について

    お世話になります。アクセス初心者です。 調べてみましたが、いまいちピントこなかったので、こちらで質問させてください。 現在、以下のようなテーブルがあります。 (科目コード)(科目名) ・・  11  国語  21  古文 211  社会 212  理科 221  体育 222  英会話   ・   ・ このテーブルを用いて、クエリを作成します。テーブルのデータはそのまま残し、クエリのみ変更させます。科目コードを以下のように置き換えるように、関数を作成しました。 11→教養 21→専門 211→演習 212→演習 221→実技 222→実技  ・ 科目区分: Replace (Replace (Replace([科目名コード],"11","教養"),"21","専門"),"221","実技")   しかし、実際出てきたクエリは、  11  教養  21  専門 211  専門1 212  専門2 221  2専門 222  実技   のようになってしまいます。これを、条件のように、、“教養”、“専門”、“演習”、“実技”ときちんと置き換えることは可能でしょうか? お休みの中、申し訳ありませんが、ご回答のほどよろしくお願いします。

  • アクセスのテーブル上でデータの置換 できない

    アクセスのテーブル上でデータの置換をしたいのですが なぜか置換ボタンが選べません。 今までは置換できました。 突然どうしちゃったんでしょうか?

  • 指定した式の構文が正しくありません アクセスクエリ

    アクセスの更新クエリで レコードの更新を Replace([T_Table]![具],","、"・") にしたいのですが、 、の部分が、「指定した式の構文が正しくありません。」 になります。 「、」は置換できないのですか? Replace([T_Table]![具],",""、""・") にしても同じエラーでした。

  • Accessのクエリについて

    Accessの初心者です。 “クエリ”がよくわからなくて困っています。 (1)テーブルの情報を更新した場合、クエリも自動で内容が更新するのでしょうか? 複数のクエリがある場合、テーブル更新後すぐにアクセスを閉じて、次にアクセスを起動させた時はクエリの内容も更新されるか。 それとも、テーブル更新後に各クエリを実行しないと更新しないとでしょうか。 (2)クエリ実行後、表示されたデータの一部を書き換えて出力した場合、元のテーブルの内容も変更されてしまうのでしょうか。 教えてください。 どうぞよろしくお願い致します。

  • アクセスでの置換について(クエリ)

    アクセスでの置換について(クエリ) クエリを使って置換をしようと思うのですが、 うまく出来ません。 変更したい文字はHTMLなんですが </tbody></table><br><br> という文字を <br><br><table> に置換したいです。 ■まずは、アクセス初心者なので、 ちゃんと抽出できるか確かめるために、 選択クエリで抽出条件に In (</tbody></table><br><br>) といれましたが、エラーが出てしまいます。 どなたか、わかるかたいたら教えてください。 よろしくお願いします。

  • Accessで、1つの項目に複数の置換えを1度でするには?

    Access2003で、1つの項目に複数の置換えを1で実行したいのですが、どうすればいいのでしょうか? 編集メニューの『置換』を使うのではなく、クエリやマクロで実行したいのです。 どんどん溜めているデータを定期的に決まった文字を1度に変換できるようにしたいのです。 例えば、[会社名]フィールドに入っている  「株式会社」 を 「(株)」 に、  「有限会社」 を 「(有)」 に、  「法人会社」 を 「(法)」 に、…続く…、などと置換えしたいのです。 更新クエリで、『Replace([会社名],"株式会社","(株)")』 と1つなら置換えできたのですが、複数置換えしたい場合は、同様のクエリをその数だけ作ってマクロで続けて実行させるという方法しかないのでしょうか? できればクエリを増やしたくないので、他にいい方法がありましたら、教えて下さい。

  • Accessでの置換

    Access97を使用しています。 置換のマクロ化って出来ますか。 具体的に言うとボタン一つで 「電話番号」のハイフンを消したいのです。 今はテーブルを開いて編集-置換で検索する文字列に 「-」、置換後の文字列に何も入れずにすべて置換しています。 Excelですと「SUBSTITUTE」という関数が一番近いのですが、 Accessでそれに準ずるものってあるのでしょうか? イベントプロシージャでの記述で教えて いただけると一番助かります。

専門家に質問してみよう