日期:2014-05-17  浏览次数:20395 次

关于DataSet 数据过大
 Database db = DatabaseFactory.CreateDatabase();
            DbCommand cmd = db.GetStoredProcCommand("froExcel");
            db.AddInParameter(cmd, "@condition", DbType.String, condition);
            DataSet Ds = db.ExecuteDataSet(cmd);



数据库中直接执行存储过程"froExcel" 耗时在几十秒。数据为51列,20W行。
但是程序在设断点的时候
DataSet Ds = db.ExecuteDataSet(cmd)
执行到该句的时候 要等待很长很长时间。
1W多的数据 都要等待2分钟
5W多的数据 要等 近十分钟
20W 的话等了 好久好久也没有最终的结果。

最终获取到DataSet 是为了进行导出Excel的,其它代码都已经准备好,就是DataSet Ds = db.ExecuteDataSet(cmd)这里等待不回来结果。

不只到各位大神有什么办法,或者是有什么东西代替DataSet 

DataSet? ExecuteDataSet

------解决方案--------------------
DataReader 填充 DataTable
------解决方案--------------------
引用:
DataReader 填充 DataTable


这样用还不如直接返回DataTable
------解决方案--------------------
对存储过程实行分页,用哪个调哪个
http://wenku.baidu.com/view/78b778e9998fcc22bcd10d9d.html
------解决方案--------------------
引用:
对存储过程实行分页,用哪个调哪个
http://wenku.baidu.com/view/78b778e9998fcc22bcd10d9d.html

支持,学习
------解决方案--------------------
缓存DATASET!
------解决方案--------------------
提醒LZ一点Excel一个工作表最大支持65536行。
------解决方案--------------------

取数据建议按需取,别全加载。
------解决方案--------------------
这个确实很烦人,导出的数据很多,DataTable效率很低。很容易死掉。

我遇到的问题更奇怪,遍历 DataTable 拼接 <table>的时候居然告诉我,连接超时,明明DataTable是关闭连接的。

最后只好告诉客户,分批导出吧。(幸好客户比较好说话)。

ps:拼接<table>比使用控件绑定,能够稍微快一点。