Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 处理大量select语句_Asp.net_Sql Server - Fatal编程技术网

Asp.net 处理大量select语句

Asp.net 处理大量select语句,asp.net,sql-server,Asp.net,Sql Server,我正在设计一个ASP.NET应用程序,其中包含一段时间内每个合作伙伴的所有销售概况。 迄今为止的工作方式: 选择所有partnerNo(SQL Server)并添加到列表(ASP.NET) 选择partnerNo1在一段时间内的销售额(SQL Server),汇总它们(ASP.NET)并将它们添加到数据表(ASP.NET) 选择partnerNo2在一段时间内的销售额,汇总并将其添加到数据表中 选择partnerNo3在一段时间内的销售额,汇总并将其添加到数据表中 等等 现在的问题是:如果我只选

我正在设计一个ASP.NET应用程序,其中包含一段时间内每个合作伙伴的所有销售概况。 迄今为止的工作方式:

  • 选择所有partnerNo(SQL Server)并添加到列表(ASP.NET)
  • 选择partnerNo1在一段时间内的销售额(SQL Server),汇总它们(ASP.NET)并将它们添加到数据表(ASP.NET)
  • 选择partnerNo2在一段时间内的销售额,汇总并将其添加到数据表中
  • 选择partnerNo3在一段时间内的销售额,汇总并将其添加到数据表中
  • 等等

    现在的问题是:如果我只选择前100名partnerNo,如果需要一段时间,但我会得到一个结果。如果我将TOP改为1000,SQL Server将处理SQL语句 (可以看到他在activitymonitor中工作),iis服务器正在向他提供新的SQL选项。。。但是过了一段时间,iis将终止来自浏览器的页面请求,因此不会显示任何结果

    我真的希望,我能解释得足够让别人帮我

    关于

    德克·Th.

    这就是问题所在。应该可以创建一个SQL查询,返回所有合作伙伴的汇总信息


    这通常要快得多:需要传输的数据更少,频率也更低。往返数据库可能需要50毫秒。如果您执行了其中的600个,则网页的超时时间为30秒。

    如果您有Framework 4.5,并且获取每个partnerN的摘要数据是互斥的,则可以尝试并行任务

    这不是一个简单的问题。但它允许您利用多个处理器

    第一条规则。你不能依赖顺序

    选项2,一种更“传统”的方法是点击数据库获取所需的一切。 我会放弃数据表,开始使用DTO或POCO对象

    然后,您可以编写迷你“只读属性”,替换计算/派生数据表列


    转到数据库,不要使用游标或循环,点击数据库获取所需的所有信息。取回后,使用只读属性将其填充到DTOs/POCO中(对于派生值)……然后,如果必须运行一些业务逻辑来找出一些派生值,那么就这样做


    如果表示层的数据集/数据表“卡住”了,您可以在DTO/POCO上进行循环,并将它们填充到数据集/数据表中。

    问题不在于汇总,而在于数据本身。。。我必须从列中进行计算,我不想在结果中显示。。。类似这样的内容:
    dr[“umsVJ”]=(Convert.ToDecimal(dr[“wertnettotal”])!=0&&Convert.ToDecimal(dr[“wertNettoTotalVJ”)!=0)?(数学四舍五入(Convert.ToDecimal)(dr[“wertnettotototal”])*100/Convert.ToDecimal(dr[“wertnettototototal”]),2-100.ToString():(Convert.ToDecimal(dr[“wertnettototototototal”])=0)(Convert.ToDecimal(dr[“roherloesVJ”])>0):(Convert.ToDecimal(dr[“roherloesVJ”==0):“100”)看起来像是你可以在SQL中轻松地完成的事情我用它玩了一点,看起来,这真的是太多的选择,这让一切都变慢了。。。好吧,我的老板不会喜欢的,我们必须修改所有的代码,但是嘿,总比没有结果好。谢谢。您使用的是哪个框架版本?如果要生成摘要数据,另一个选项可能是查看Microsoft SQL Server Analysis Services(SSAS)。“转到数据库,不要使用游标或循环,并点击数据库获取所需的所有信息。”……这与Andomar提到的RBAR模式相反。一排一排会让你慢下来。