首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDataAdapter内存使用

SqlDataAdapter内存使用
EN

Stack Overflow用户
提问于 2011-06-28 04:38:28
回答 2查看 981关注 0票数 1

我有一个将1500000加载到网格中的应用程序。问题是它需要大量的记忆。(1.8 GB)

我观察到,

  • 如果在SQL查询分析器上运行相同的查询,则大约需要60 on
  • 在应用程序中,如果只执行ExecuteNonQuery(),它还需要大约60 if。

当我以DataTable的形式执行它以获得输出时,我觉得在我的方法上存在一些问题。请帮帮忙。

下面是我这样做的方法(即使我调用了一个SP,它也执行作为参数传递的sql )

代码语言:javascript
复制
                    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();
                    }
EN

回答 2

Stack Overflow用户

发布于 2011-06-28 04:47:38

在将大量数据从文本文件加载到可数据存储/数据栏中时,我也遇到了类似的问题。我正在加载的许多数据很难被输入,因为这些文件来自许多不同的来源,有许多不同的变体,所以它们都是作为文本列加载进来的。我正在加载的许多数据只是一个字符长。

这篇文章讨论了.NET中字符串的开销及其对仅一个字符的许多元素的影响。它提供了使用ANTs分析器的示例。我得到了试用版,并用它来确认我看到的用法。由于数据的变化,我无法调整我的列类型,但是如果您发现您的数据列可以作为字符串以外的类型键入,那么您可能会发现一些重要的改进。

票数 1
EN

Stack Overflow用户

发布于 2011-06-28 04:59:19

也许您可以实现某种分页或“按需加载”?

当运行此方法两次时,您会释放旧的datatable,不是吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6501617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档