質問です。
配列に格納されてる複数件分のデータをFor文を使って
一件一件繰り返しながら、
INSERT文を発行して、1レコードずつ作成しています。
これだと処理時間が掛かりすぎてしまいます。
1回のINSERT文の発行で複数件のデータの登録は出来ないでしょうか?
環境
VB.NET 2003
ACCESS 2003
ODBCドライバで接続しています。
よろしくお願いします。
> ODBCドライバで接続しています。
mdb への ODBC 接続は比較的低速なので、避けた方が無難でしょう。
高速化のみに焦点を絞るのであれば、DAO を使って、
「テーブルタイプの Recordset」に AddNew するようにすれば
単一テーブルへの登録は、相当の高速化を図ることが出来ます。
ただし、.NET からだと、COM Interop の分の効率低下があるので、
本当に高速化できるかどうかは、試してみないとわかりませんけれども。
ご回答、ありがとうございます。
ODBC接続は低速なのですね。知りませんでした。
DAOを使って速度実験をしてみます。
又、他に何か良い方法がありましたら、よろしくお願いします。
DAOを使っての速度実験がようやく終わりました。
魔界の仮面弁士様 ありがとうございました。
結果は魔界の仮面弁士様の云われていた通り、
>「テーブルタイプの Recordset」に AddNew するようにすれば
>単一テーブルへの登録は、相当の高速化を図ることが出来ます。
のようにすれば、処理速度を上げることが出来ました。
>ただし、.NET からだと、COM Interop の分の効率低下があるので
と、云われていましたが、それ以上の速度アップでした。
結果
今まで10秒かかっていたものが、5秒になりました。
>> ただし、.NET からだと、COM Interop の分の効率低下があるので
> と、云われていましたが、それ以上の速度アップでした。
気になったので、手元の環境で速度検証をしてみましたが、
VB6 と比べると、やはり速度低下が見受けられました。
http://www.vb-user.net/junk/replySamples/2006.11.17.23.00/daoAddNew.zip
なお、当方環境で、10万件のデータを追加するのにかかった時間は、
1.70±0.02秒程度 …… VB6
3.35±0.18秒程度 …… VB2005
5.01±0.71秒程度 …… VBScript
でした。
他の環境では、また違った結果になると思いますが、一応参考までに。
魔界の仮面弁士 様
検証までしていただき、ありがとうございます。
話には聞いていましたが、.NETは本当に遅いのですね。
今回もいい勉強をされていただきました。
ありがとうございました。
ツイート | ![]() |