お世話になります。
セレクトした結果(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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと タイムマシンを破壊すべきか。
これはディベートの論題だと仮定したうえでの回答お願いします。あなたは、その末にタイムマシンを壊してしまうのか、使い道を探すのかどうかを考えてもらいたいです。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
SQLの速度をあげるには・・・
Visual Basic(VBA)
-
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
ODBCでMoveNextがうまく動作しないようなのですが
Visual Basic(VBA)
-
-
4
2つ目のレコードの値を取得するには?
Access(アクセス)
-
5
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
6
Access VBA acCmdSelectRecordについて
その他(データベース)
-
7
ACCESS ADOでupdateが効かない
その他(データベース)
-
8
実行時エラー3131 FROM 句の構文エラーです について
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COBOLのPtoPとは?
-
プログラムの規模を表す単位「k...
-
ubuntuで デイスク/deb/loopと...
-
Octaveでのオイラー法とルンゲ...
-
ブロック化因数(ブロッキング...
-
15パズルゲームについて
-
パソコンでインターネット接続...
-
ブロック長について
-
ライン数とステップ数の違いに...
-
昔したタイピングソフトが思い...
-
hdmiはパラレル?シリアル?
-
半導体の前工程と後工程について
-
シェルスクリプトについて
-
C言語・スタックを使用した逆...
-
「演算」「回路」の基本的なし...
-
ステップ数について
-
コンパクションとガーベジコレ...
-
VB.netでDLLを読み込んで実行す...
-
メモリ素子とメモリチップとい...
-
DMAチャネルの劣る点とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MoveNextの処理速度は?
-
トランザクション管理について
-
VB & SQLサーバ
-
トランザクションとは何のこと...
-
JDBCでのトランザクション・排...
-
Excel VBA マクロ処理 リンク先...
-
[ASP]If~Else If~End If 対 Case
-
ExecuteNonQueryとSelectComman...
-
COBOLのPtoPとは?
-
リフレッシュ処理の意味を教え...
-
【プログラム】論理的思考のコツ
-
パソコンでインターネット接続...
-
ubuntuで デイスク/deb/loopと...
-
プログラムの規模を表す単位「k...
-
ライン数とステップ数の違いに...
-
hdmiはパラレル?シリアル?
-
VB.netでDLLを読み込んで実行す...
-
ステップ数について
-
L2スイッチの管理VLANに...
-
Ic-PcAn はどこのこと?
おすすめ情報