Asp.net 处理大量select语句
我正在设计一个ASP.NET应用程序,其中包含一段时间内每个合作伙伴的所有销售概况。 迄今为止的工作方式: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在一段时间内的销售额,汇总并将其添加到数据表中 等等 现在的问题是:如果我只选
这通常要快得多:需要传输的数据更少,频率也更低。往返数据库可能需要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模式相反。一排一排会让你慢下来。