日期:2014-05-18  浏览次数:20976 次

千万量级数据的处理问题
最近做的一个数据库管理系统 由于数据量过大 现在出现了System.OutOfMemoryException的问题请问如何处理
源代码:
C# code
if (Session["Power"].ToString() == "管理员")
        {
            Response.Write("<script> alert('您没有去重权限')</script>");
        }
        else
        {
            int rows = 0;
            BLL.CustomInfor bll = new BLL.CustomInfor();
            DataSet ds1 = bll.SelectForDelete("业主");
            for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
            {
                DataSet ds2 = bll.SelectByID("业主", Convert.ToInt32(ds1.Tables[0].Rows[i]["C_id"].ToString()));
                for (int j = 0; j < ds2.Tables[0].Rows.Count; j++)
                {
                    if (ds1.Tables[0].Rows[i]["C_Phone"].ToString() == ds2.Tables[0].Rows[j]["C_Phone"].ToString())
                    {
                        rows = rows + bll.DeleteCus(Convert.ToInt32(ds2.Tables[0].Rows[j]["C_id"].ToString()));
                    }
                }
            }
            Response.Write("<script> alert('共删除了" + rows + "条数据')</script>");
        }
        Bind();


------解决方案--------------------
好像有什么游标之类的可以用吧,不能一次性全部读出来。
程序里读出来一部分就行了,用户如果选择往下浏览,到了最下边再重新读,大概是这样的。
------解决方案--------------------
探讨

引用:

好像有什么游标之类的可以用吧,不能一次性全部读出来。
程序里读出来一部分就行了,用户如果选择往下浏览,到了最下边再重新读,大概是这样的。
这个做的是一次性将这一类的重复数据全部删除,不需要用户看到界面的

------解决方案--------------------
你千万数据全放datatable了吧
------解决方案--------------------
你用這個最快的表格來加載你的數據,肯定比其它表格快10倍以上

http://www.dapfor.com/en


我博客有xx版本

這裡
------解决方案--------------------
分页吧,再多内存也架不住数据多啊
------解决方案--------------------
探讨
引用:
你千万数据全放datatable了吧
是的~

------解决方案--------------------
直接通过sql语句在数据库删除重复数据,不要读取出来用程序判断是否重复
------解决方案--------------------
每次查询1000条,分开查询。