グリッドに150万をロードするアプリケーションがあります。問題は、大量のメモリを必要とすることです。(1.8 GB)
私は次のことを観察しました、
- SQLクエリアナライザで実行した場合、同じクエリで約60MBかかります
- アプリケーションでは、ExecuteNonQuery()を実行するだけで、約60MBもかかります。
DataTableとして出力するために実行すると問題が発生しますが、実行方法に問題があると感じています。助けてください。
これが私がそれを行う方法です(私がSPを呼び出しても、それは私がパラメーターとして渡すsqlも実行します)
using (var conn = new SqlConnection(connStr))
{
SqlCommand command = conn.CreateCommand();
//DbCommand command = conn.CreateCommand();
command.CommandTimeout = 30000;
conn.Open();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = spName;
SqlDataAdapter da = new SqlDataAdapter(command);
dt = new DataTable();
da.Fill(dt);
if (dt != null)
{
if (dt.Rows.Count == 0)
{
dt = null;
}
}
conn.Close();
}