お世話になります。
セレクトした結果(100000件)を一件ずつ違うテーブルにインサートする処理を行っているのですが、セレクトしたデータをMoveNextしていくとだんだん遅くなっていくような感じがします。MoveNextとはどのような処理なのでしょう
か?
またこの方法以外にSelectしたものを一軒ずつInsertするよい(早い)方法があれば教えてください。
Set oraDynaset = DATABASE.oraDynaset(セレクト文, 0&)
Do Until oraDynaset.EOF
insert処理...
oraDynaset.MoveNext
Loop
No.3
- 回答日時:
>ただ、セレクトしたデータを加工してインサートしたいと
>考えております。
どのような加工でしょう?
どうしてもSQLで出来ない加工ですか?
速度的には雲泥の差になるかもしれませんよ。
あと、SQLで出来ないとしたときのアドバイスを。
Dynasetの作成方法なんですが、読み込み専用で、前方に戻れないようなオプションをつけて作成してください。
MoveNextで行われるのはフェッチ処理です。
レコード件数が多くなると、前方に戻れるカーソル(Dynaset)ではバッファに内容を格納していくので処理が遅くなります。
この回答への補足
ご回答ありがとうございます
読み込み専用オプションとはどのように設定するのでしょうか?
参考になるようなホームページ等ご存知内でしょうか?
なにぶんVB初心者なのでどこをどう調べてよいかわからず
困っています。
よろしくお願いします。
No.2
- 回答日時:
DAOを使用されていますか?
もしDAO使用でデータがJETであれば、INSERT分を発行するより、
ADDNEW/UPDATEにてテーブルに追加したほうが、
INSERT文発行より約4倍近くスピードが違うそうです。
特に更新明細が多ければ多いほど、速度差は大きくなります。
MOVENEXTで処理が遅くなっているというよりは、
20,000件近いデータの更新処理が遅い原因かと思われますので、
この更新方法をお勧めしたいです。
ADDNEW、UPDATEはDAOのヘルプに載ってます。参考になすってください。
この回答への補足
oo4oにて処理を行っています
UPDATEにてテーブルに追加とは、
SQL文のUPDATEのことでしょうか?
ADDNEWとはどのようなSQL文なのでしょうか?
よろしくお願いします。
No.1
- 回答日時:
>またこの方法以外にSelectしたものを一軒ずつInsertするよい(早い)方法があれば教えてください。
insert先のテーブルの分だけ
insert into インサート先A select F1,F2 from 元テーブル名 where インサート先Aに入れるレコードの抽出条件
という感じのinsert文を使って入れるべきでしょう。
この回答への補足
ご回答ありがとうございます。
ただ、セレクトしたデータを加工してインサートしたいと
考えております。
Do Until oraDynaset.EOF
データの加工
加工したデータをinsert処理...
oraDynaset.MoveNext
ですのでInsert Into table Select...
で行う手段は断念したのです。
今現状で18,000件のデータをセレクトして一軒ずつ加工して一軒ずつInsertする方法ですと処理が終わらない状況です(泣)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA マクロ処理 リンク先...
-
リフレッシュ処理の意味を教え...
-
MoveNextの処理速度は?
-
ubuntuで デイスク/deb/loopと...
-
hdmiはパラレル?シリアル?
-
VB.netでDLLを読み込んで実行す...
-
リユーザブル,リエントラント...
-
スタックフレームの消滅
-
プログラムの規模を表す単位「k...
-
ライン数とステップ数の違いに...
-
タッチタイピング
-
パソコンでインターネット接続...
-
この二つの問題とける人いませ...
-
サブネットマスクが255.255.255...
-
エクセルのHLOOKUP関数の検索範...
-
タイピングを上達させたいので...
-
アイソレータとはなんですか?
-
初級シスアドの問題ですが。。。
-
169.254.・・.・・ のIPの機器...
-
関数呼び出しでのスタック消費量
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MoveNextの処理速度は?
-
[ASP]If~Else If~End If 対 Case
-
トランザクションとは何のこと...
-
Excel VBA マクロ処理 リンク先...
-
COBOLのPtoPとは?
-
リフレッシュ処理の意味を教え...
-
パソコンでインターネット接続...
-
プログラムの規模を表す単位「k...
-
ubuntuで デイスク/deb/loopと...
-
ライン数とステップ数の違いに...
-
Macと iPadの違いについて 今現...
-
命令口調について
-
VB.netでDLLを読み込んで実行す...
-
hdmiはパラレル?シリアル?
-
ステップ数について
-
最大スタックサイズを大きくす...
-
エラー?メッセージ
-
サブネットマスクが255.255.255...
-
ステップ数??
-
Ic-PcAn はどこのこと?
おすすめ情報