현재 ASP.NET MVC 3 프로젝트에서 Entity Framework를 사용하고 있습니다. 그리고보기에 레코드를 반복하면서 심각한 성능 문제가 발생했습니다.Entity Framework 4.1 성능 문제
데이터가 빠르게 수신되고 있으므로 원격 Oracle 서버에 연결되어 있지 않으며 사용중인 모델에 게으른로드 관계가 없지만 각 레코드는 간단한 처리를 위해 120-300ms가 소요됩니다. 액션 링크가있는 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()를하고 있습니까? –
그리고 이것은 아주 작은 것입니다. 그러나 멈춤 식 감시의 선언 줄을 루프 바깥쪽으로 옮겨야합니다. –