私はデータベースからレコードを取り出すコードをいくつか持っています。次に、単純な比較を行い、レコードが特定のモジュールとレスポンスに一致するかどうかを確認してから、カウントを使用して統計を表示します。残念ながら、それはデータベースの1000レコードを超えるものになると非常に遅いです。foreachループを最適化する
nHibernateでは、最初のクエリ時間にちょっとした助けとなるレイジーローディングを有効にしましたが、少し深く掘り下げていく必要があるこの部分に到達すると、多くの速度が低下します。私は問題は、これらの統計情報を得るために、多くの異なるテーブルからデータを取り出すことだと思います。
foreachループを使用する代わりに、linqステートメントを書くことでこれをスピードアップできるはずですが、私はいくつかの試みを行いました。誰かが私を正しい方向に向けるのを助けることができるかどうか疑問に思っていた。または、良い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へ! –