我有一些代码将数据从数据库中提取出来,然后做一个简单的比较来检查记录是否匹配特定的模块和响应,然后使用计数和显示统计信息。不幸的是,当数据库中的任何记录超过1000条时,它会非常缓慢。优化foreach循环
在nHibernate中,我打开了懒惰加载,这在初始查询时间中有点帮助,但是当它到达这个部分时,它需要深入一点才会减慢很多。我想问题是它从很多不同的表中提取数据来获得这些统计数据。
从一些研究看来,我应该能够通过编写linq语句而不是使用foreach循环来加速这一过程,但是我已经尝试了几次,而且我没有走得太远。我想知道是否有人能帮助我指出正确的方向。或者对一个很好的Linq教程或书籍,因为我对这个主题知之甚少
另外我看到在类似的情况下,人们已经建议把一个工作放入sql server来填充另一个用于查找的表,但我想如果可能的话避免这一点
这是代码。
int modules = 0;
var sessionsWithPullHits = from session in m_sessions where session.PullHits.Count > 0 select session;
foreach (ISession<PullHitRecord, PushHitRecord> session in sessionsWithPullHits)
{
foreach (var pullHit in session.PullHits)
if ((pullHit.Module == _Module) && (pullHit.Response == _response))
{
modules++;
}
}
非常感谢任何帮助的人可以给。
顺便说一句,写得很好的问题。欢迎来到stackoverflow! –