dbをクエリし、データテーブルにデータを入力する次のコードがあります。
private DataTable Run(string sql)
{
var conn = new OdbcConnection();
string connString = "[myConnString];";
conn.ConnectionString = connString;
conn.Open();
var da = new OdbcDataAdapter {SelectCommand = conn.CreateCommand()};
da.SelectCommand.CommandText = sql;
var dt = new DataTable();
da.Fill(dt);
da.Dispose();
conn.Close();
return dt;
}
プロファイラーを実行したところ、この行では非常に長い時間がかかることがわかりました。
da.Fill(dt);
クエリは約1000行のみを返します。この呼び出しで.net内で行われていることのプロファイルの詳細は次のとおりです。
クエリを実行し、それをデータテーブルに変換してから、そのテーブルをオブジェクトのリストに変換することを考えると、これを最適化するためにできることは以下にあります(データアダプタからオブジェクトのリストに直接変換する方法はありますか??) 。私は基本的に、このコードでこのパフォーマンスのボトルネックの回避策を探していますか?