解决方案 »

  1.   

    快速,只是相对来说,我现在用DataSet读取数据,读80万 数据读出来大概需要差不多一个多小时吧。现在就是想知道有没有更快的方法。
      

  2.   

    单纯从SQL Server来说,返回100万,几分钟到十几分钟不等。这个过程视乎forwarded/forwarding record、page split、fragment等等,如果全表返回,只要内存足够,没有阻塞,你基本上没有什么优化空间了,如果是有where条件返回,还要看结果集和总量的比例,比例太大的话也没什么优化空间。简单来说,在SQL Server端返回百万级数据,可提升空间不大。而你说的DataSet ,这个是前端范畴,可能瓶颈在网络传输、数据绑定、转换、提取方式等等上面,这部分暂时没有什么研究。
      

  3.   

    数据不是给客户端用的,自己读出来另有作用你是不是只要导出来?
    declare @filename nvarchar(30)
    select @filename='Report'+right(replace(convert(date,GETDATE()),'-',''),2)+substring(replace(convert(date,GETDATE()),'-',''),5,2)+substring(replace(convert(date,GETDATE()),'-',''),1,4)+'.csv'
    ------------------------------------------
    declare @strSQL nvarchar(1024)
    set @strSQL='bcp "SELECT * from [A] " queryout D:\'+@filename+' -c -T -t","'
    print @strSQL
    EXEC master..xp_cmdshell @strSQL导出csv文件,用excel 也可以打开处理
      

  4.   

    那就执行上面语句 截得SELECT * from [A] [A]前面要加上你的数据库名称 如 数据库名为DB 那就 select  * from DB.dbo.[A] ,导出完成之后就在d盘有csv文件的
      

  5.   

    不加的会默认在master 库找那张表
      

  6.   

    我目前用C#写的考勤系统,将全公司一个月的打卡数据一次导出到Excel表,用的是NOPI插件,速度很快
    建议楼主试下看
    sSQL = @"dbo.spAtt_Month ";            if (bFlag) //可查全部人的
                {
                    sSQL += "'',";
                }
                else //只能查自己的
                {
                    sSQL += "'" + Utility.RQuote(this.UserID) + "',";
                }
                sSQL += Utility.Quote(this.ddlATT_MONTH.SelectedValue);
                
                DataTable dt = db.ExecDataTable(sSQL);            if (dt.Rows.Count > 0)
                {
                    string sFileUpload2 = "考勤月统计表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";                CommonFunction.ExcelHelper.ExportDTtoExcel(dt, "考勤月统计表", Server.MapPath("~/UploadFiles/Del/") + sFileUpload2);
                    HLResult.NavigateUrl = "~/UploadFiles/Del/" + sFileUpload2;
                    HLResult.Visible = true;                ScriptManager.RegisterStartupScript(UpdatePanel2, typeof(UpdatePanel), "scriptName", "alert('考勤月统计表导出成功!请点击右边链接下载。')", true);
                    return;
                }
                else
                {
                    ScriptManager.RegisterStartupScript(UpdatePanel2, typeof(UpdatePanel), "scriptName", "alert('对不起,没有记录要导出。')", true);
                    return;
                }
      

  7.   

    我是用的存储过程来查询数据的,然后将DataTable 绑定到GridView的数据源,部分代码如下:DataTable dt = db.ExecDataTable(sSQL);
                gvResult.DataSource = dt;
                gvResult.DataBind();