重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります。

現在VB.NETよりOLEDBを使用してSQLServerに
レコード登録(バッチ処理)を行っているのですが
約2万3千件のレコードを登録(1レコード1コミット)
するのに6時間くらいかかってしまいます。
(1レコード500BYT)

1時間で1万件の登録は行えるのですが、だんだん
1レコードあたりの登録時間が長くなっていきます。
DB登録の前に存在チェックを行っていますが、検索条件は
KEY項目指定です。

SQLサーバーの設定はデフォルトのままで、
FREE BUFFERやメモリ等に問題はみられませんでした。

他に考えられる原因をご存知の方がいらっしゃれば
ご教授願います。

宜しくお願いします

A 回答 (3件)

テーブルにインデクスを付けているのであれば、それが原因です。

レコードの登録に伴うインデクスの更新は、既登録レコード数が多いほど長い時間が掛かります。
    • good
    • 0

1件ずつやるから遅いんだと思います。


存在チェックも含めて全体で一括処理できませんか。

テキストを読みこんで登録する処理ならば、一旦BCPでワークに入れてからやってみてください。
    • good
    • 0

まずはボトルネックを調査することが先決ですが、


主キーやインデックスを設定していたなら更新前に一旦削除しておいて、更新後に再作成をするようにしてみては如何でしょうか?
    • good
    • 0

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

関連するカテゴリからQ&Aを探す