我正在ASP.NET Webforms中进行系统设置,并且在某些特定情况下有Acccounts记录生成表单我需要获取接近1百万的所有记录。
一种解决方案可能是减少要获取的记录数量,但是当我们需要获取记录超过一年的5年时间时,记录有50万,100万等等。我怎样才能减少时间?
我可以用什么来减少时间?我无法在此处显示完整查询,这是一个大视图,可以调用其中的其他视图
如果我将其设计为Linq查询,是否需要更少的时间?这就是我问Linq vs Views
的原因我已经执行了一个“Select * from TableName”查询,它的40分钟及其仍在执行的表中有1,17,000条记录我们可以减少此时间线
答案 0 :(得分:0)
我把它作为评论开始,但用完了。
使用服务器为您做尽可能多的过滤,并尽可能少地返回。客户端过滤总是比服务器端过滤慢得多。例如,它无法访问索引&服务器上存在的优化技术。
Linq使用"懒惰评估"这意味着它构建了一个过滤方法,但在被强制之前不执行它。我已经使用了它,最初对速度印象深刻......直到我开始访问它返回的数据。当您使用想要来自Linq的数据时,这将触发实际的选择过程,您发现该过程很慢。
使用服务器返回一系列小结果集,然后处理它们。如果需要在键上加入这些结果集,请使用该键将它们保存到词典中,以便快速加入。
另一种方法是查看Entity Framework以创建服务器数据库结构的镜像以及索引,以便可以快速连接您检索的数据子集。