現在、ASP.NET MVC 3プロジェクトでEntity Frameworkを使用しています。 そして、ビュー内のレコードをループして表示する際に、重大なパフォーマンス上の問題が発生しています。Entity Framework 4.1パフォーマンスの問題
データがすぐに受信されているため、リモートのOracleサーバーへの接続ではなく、使用しているモデルに遅延ロードされた関係はありませんが、各レコードは単純な処理に120〜アクションリンクを含む3つのフィールド出力。
現在、800,000レコードでページを読み込むのに3分以上かかります。
私は設定オプションを使って調整を試みましたが、どれも役に立たないようです。
誰にでもアイデアはありますか?
編集:コントローラコード
readonly OracleSampleManagerContext db = new OracleSampleManagerContext();
public virtual ActionResult Index()
{
var spList = db.SamplePoints.OrderBy(e=>e.Id).ToList();
return View(MVC.Reports.Views.SamplePointList, spList);
}
<h2>
Selection By Sample Point
</h2>
<table>
@foreach (var sp in Model)
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
<tr>
<td>@Html.ActionLink(sp.Id, MVC.Reports.Results(sp.Id))</td>
<td>@sp.Description</td>
<td>@sp.PointLocation</td>
<td>@sw.ElapsedMilliseconds</td>
</tr>
sw.Stop();
sw.Reset();
}
</table>
例:
0200 72" Sewer to river - Once through cooling water OUTFALLS 346ms
0400 66" Sewer to river - Combined effluent OUTFALLS 347ms
0500 54" Sewer to river - Once through cooling water OUTFALLS 388ms
06-AI-18 TBA in Water IB2 228ms
06-AI-31 TBA in Water IB2 172ms
あなたはもっと私たちを見せなければなりません。あなたはモデルにどのように人を送り込んでいますか? MVC.Reports.Results()とは何ですか? –
'Model'が作成されたときにクエリが実際に実行されていますか?たとえば、その時点で 'ToList()'をやっていますか? –
これはちょっとニッチですが、ストップウォッチの宣言行をループの外側に移動する必要があります。 –