C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 172 を表示中)
■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;

返信 編集キー/


管理者用

- Child Tree -