■99147 / ) |
Re[10]: Adapter.Fill実行1回目が遅い |
□投稿者/ ど (6回)-(2022/02/10(Thu) 19:48:42)
|
コードをはしおってしまって申し訳ないです。
明示的にOpen、Closeはおこなっています。
一部コードを省略していますが、DataSetの結果に基づいてInsert処理を走らせています。
ブレークポイントを設定して調査するとcustomerDA.Fillの箇所が一番時間がかかります。
それ以外のところは全く時間がかかりません。例えば初回にDataSetに入れるところが3〜5秒くらいだとすると、2回目以降にDataSetに入れるところは1秒以内で処理が完了します。
テーブルのデータを空っぽにしても結果は同じです。Indexも張っています。
C以外にも、Dドライブ直下、D:\testフォルダ、ネットワークフォルダなど全部試しましたが結果は1回目が
遅く2回目以降は速いです。これらのファイルは絶対パスで指定います。
ちなみに.Net Frameworkのバージョンは4.7.2になります。
OleDbConnection nwindConn = new OleDbConnection(connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C\:test\mydb.accdb");
nwindConn.Open();
OleDbConnection nwindTransaction = nwindConn.BeginTransaction(IsolationLevel.ReadCommitted);
OleDbCommand selectCMD = new OleDbCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn);
OleDbDataAdapter customerDA = new OleDbDataAdapter();
customerDA.SelectCommand = selectCMD;
DataSet customerDS = new DataSet();
customerDA.Fill(customerDS, "Customers");
// INSERT処理
selectCMD.Dispose();
nwindConn.Close();
nwindTransaction.Commit();
nwindTransaction.Dispose();
nwindTransaction = null;
|
|