我有一个将 1500,000 加载到网格的应用程序。问题是它需要大量内存。(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();
}