, 데이터 세트에 내가 LINQ 쿼리를 다음 있습니다 :Linq는 쿼리 최적화
var itembind = (from q in dsSerach.Tables[0].AsEnumerable()
select new
{
PatternID = q.Field<int>("PatternID"),
PatternName = q.Field<string>("PatternName") + " " + q.Field<string>("ColorID") + q.Field<string>("BookID"),
ColorID = q.Field<string>("ColorID"),
BookID = q.Field<string>("BookID"),
CoverImage = (from img1 in objJFEntities.ProductImages.ToList()
where img1.PatternName.ToLower() == q.Field<string>("PatternName").ToLower()
select new CoverImage
{
URL = "Images/MediumPatternImages/" +
q.Field<string>("PatternName") + "_" + q.Field<string>("ColorID") + q.Field<string>("BookID") + q.Field<string>("ImageExtension"),
ID = q.Field<int>("ProductImageID")
}).FirstOrDefault(),
TotalCount = q.Field<int>("TotalCount")
}).Distinct();
var patterns = (from r in itembind
group r by new { r.PatternID, r.ColorID } into g
select new SearchPattern
{
PatternID = g.Key.PatternID,
PatternName = string.Join(",", g.OrderBy(s => s.ColorID).OrderBy(s => s.BookID)
.Select(s => String.Format("<a href='{0:s}' title='{1:s}'>{2:s}</a><br />",
new object[] { String.Format("Product.aspx?ID={0}&img={1}", g.Key.PatternID, s.CoverImage.ID), s.PatternName, s.PatternName })).FirstOrDefault()),
CoverImage = g.Count() > 1 ? (from img1 in objJFEntities.ProductImages.ToList()
where img1.ProductImageID == g.Select(i => i.CoverImage.ID).FirstOrDefault() && img1.ColorID.ToString() == g.Key.ColorID
select new CoverImage
{
URL = "Images/MediumPatternImages/" +
img1.PatternName + "_" + img1.ColorID + img1.BookID + img1.ImageExtension,
ID = img1.ProductImageID
}).FirstOrDefault() : g.Select(i => i.CoverImage).FirstOrDefault()
}).ToList();
이러한 쿼리 만 1000 개 레코드를 실행하기 위해 더 많은 다음 1 분하고있다. dsSearch는 내 프로 시저에서 SQL로 반환 된 레코드로 채워진 데이터 집합입니다. 엔티티 프레임 워크를 사용하고 있습니다. 이 사이트는 IIS7.0과 함께 배포됩니다. SQL Server 2008이 사용 중입니다.
나는 " 오류 메시지. : 제한 시간이 만료 제한 시간은 작업의 완료 또는 서버가 응답하지 전에 경과을."가지고 로그인에서 "없습니다 데이터베이스를 열 수 없습니다"DB "를 요청, 가 로그인에 실패했습니다. . " & "기본 제공 업체가 Open에서 실패했습니다." 오류의 종류는 매우 자주 사이트.이러한 쿼리를 최적화하는 방법을 알려주십시오.
는 편집 : 여기
이 인출되는 첫 번째 쿼리는합니다 (ToList과 더불어, objJFEntities.ProductImages.ToList을()하고있는) 전화에서 절차
연결 문자열이 정확한지 확인 했습니까? 통합 보안을 사용하고 있습니까? –
예, 확인했습니다. 연결 문자열에 통합 보안을 사용하지 않습니다. – Neha
오류는 데이터베이스 연결이 시간 초과가 아니라 쿼리가 아니라는 것을 의미합니다 (기본 시간 초과는 60 초라고 생각합니다). 연결 및 IIS 설정을 확인합니다. –